Ich habe zwei verschiedene Projekte und in einem, ich habe eine Klasse, die ein benutzerdefiniertes Ereignis definiert unter bestimmten Bedingungen Feuer:Benutzerdefinierte Ereignisse und Threading
public delegate void ButtonHandler(object myObject,
GuitarArgs myargs);
public event ButtonHandler OnButtonPress;
... other stuff ...
GuitarArgs myArgs = new GuitarArgs(guitarState);
if(OnButtonPress!= null)
OnButtonPress(this, myArgs);
Dann in einem anderen Projekt erstelle ich eine Instanz dieser Klasse und subscribe zu diesem Event:
Guitar.OnButtonPress += Guitar_OnButtonPress;
Das Ereignis löst dann richtig, aber es scheint, auf einem anderen Thread zu sein, denn wenn ich versuche, einige UI-Elemente zuzugreifen, ich erhalte eine Fehlermeldung: Der rufende Thread dieses Objekt nicht zugreifen kann weil ein anderer Thread es besitzt.
Der Code der Fehler zu werfen ist:
void Guitar_OnButtonPress(object myObject, Guitar.GuitarArgs myargs)
{
GuitarCheck(myargs.State);
}
private void GuitarCheck(GuitarState getState)
{
if (getState.green)
{
VisualTreeHelper.HitTest(guitarCanvas, null,
MyHitTestResult,
new GeometryHitTestParameters(
new RectangleGeometry(new Rect(1, 411, 88, 78))));
}
}
Was kann ich tun, um diese zum Laufen zu bringen?
Vielen Dank.
ähnliches Problem zu dieser Frage: http://stackoverflow.com/questions/2403972/c-sharp-events-between-threads-executed-in-their-own-thread-how-to –