Jeg får ingen compile error, men der bliver ikke udskrevet noget i txtActivePlaylist...
if(InvokeRequired) bliver aldrig kørt.. Det må vil betyde at tekstboksen ikke kræver indvoke.... Men giver det mening? Eller er det mon noget andet der er galt?
jep, det er det jeg har gjort med messagebox.show Og deri kan jeg se at det jeg vil have ud er som det skal være...
Måske er det værd at nævne at EventHandling(string Message) får sin parameter fra en ekstern tråd, gennem delegate og event. Jeg tror dog ikke det betyder noget, da det ikke er fra den eksterne tråd at jeg vil arbejde med tekstboksen
System.InvalidOperationException was unhandled Message="Invoke eller BeginInvoke kan ikke kaldes for et objekt, før der er oprettet en vindues-handle." Source="System.Windows.Forms" StackTrace: ved System.Windows.Forms.Control.MarshaledInvoke(Control caller, Delegate method, Object[] args, Boolean synchronous) ved System.Windows.Forms.Control.Invoke(Delegate method, Object[] args) ved MIDIKlient.BD_User.ShowActivePlaylist(String protocolData) i D:\Dokumenter\Visual Studio 2005\Projects\MIDIKlient\MIDIKlient\BD_User.cs:linje 78 ved MIDIKlient.BD_User.EventHandling(String Message) i D:\Dokumenter\Visual Studio 2005\Projects\MIDIKlient\MIDIKlient\BD_User.cs:linje 43 ved MIDIKlient.BD_Server.DecodeProtocol(String ProtocolData) i D:\Dokumenter\Visual Studio 2005\Projects\MIDIKlient\MIDIKlient\BD_Server.cs:linje 145 ved MIDIKlient.BD_Server.StartListener() i D:\Dokumenter\Visual Studio 2005\Projects\MIDIKlient\MIDIKlient\BD_Server.cs:linje 97 ved System.Threading.ThreadHelper.ThreadStart_Context(Object state) ved System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) ved System.Threading.ThreadHelper.ThreadStart()
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Net; using System.Threading; using System.IO;
namespace MIDIKlient { public partial class BD_User : Form { delegate void StringParamDelegate(string aString);
if (_temp[0] == "LIST" && _temp[1] == "PLAYLIST") { Form BD_User_LoadPlaylist = new BD_User_LoadPlaylist(Message); BD_User_LoadPlaylist.ShowDialog(); } else if (_temp[0] == "SYNC" && _temp[1] == "PLAYLIST") { ShowActivePlaylist(Message); } }
public void LoadPlaylist(int PlaylistToLoad) { CT_PlaylistSequence Load = new CT_PlaylistSequence(); MIDIClient.SendMessage(Load.LoadPlaylist(PlaylistToLoad)); }
public void MakeConnectionToServer(IPAddress ServerIPAddress, int ServerPortNumber) { BD_Server.MIDIEvent += new BD_Server.HandledMIDIEvent(EventHandling);
Så det må være noget med at den ikke kan lide at få data fra min tråd, som ellers bliver overført via delegate og event.
Uddrag af min tråd //disse er erklæret for hele klassen public delegate void HandledMIDIEvent(string message); public static event HandledMIDIEvent MIDIEvent;
//uddrag af den metode der genererer eventet og hiver data med case "SYNC": if (ParsedData[1] == "PLAYLIST") { Synchronization += "SYNC:PLAYLIST," + ParsedData[2]; temp = "SYNC:PLAYLIST"; } else if (ParsedData[1] == "SEQUENCE") { Synchronization += "," + ParsedData[2] + ";" + ParsedData[3]; temp = "SYNC:SEQUENCE"; } else if (ParsedData[1] == "ACTIVESEQUENCE") { Synchronization += ",ACTIVESEQUENCE;" + ParsedData[2]; temp = "SYNC:ACTIVESEQUENCE"; } else if (ParsedData[1] == "END") { HandledEventArgs ev = new HandledEventArgs(); MIDIEvent(Synchronization); Synchronization = null; temp = "SYNC:END"; } break;
i min form startes denne tråd og en event trigger ting sættes op således
BD_Server.MIDIEvent += new BD_Server.HandledMIDIEvent(EventHandling);
Ang. MIDIEvent, ja den skal være static, da jeg skal kunne gribe på den event der puttes i den, fra en anden klasse... f.eks. BD_User
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.