Ich möchte auf Ereignis warten, wenn ich Daten in meinem C# -Projekt bekomme.Warteereignis in der Anwendung
Wenn das Programm einig Daten lesen GetData anderes Programm erstellt ein Ereignis am Ende der Daten lesen (Call EventForGetData). Also muss ich auf EventForGetData warten, die den Lesevorgang beenden.
Ich habe diesen Code für diese Aufgabe geschrieben, glaube aber, dass dieser Code möglicherweise optimaler schreiben würde.
public static bool WaitEvent = true;
public void EventForGetData(string variable)
{
WaitEvent = false;
}
public static string ForWaitGetData()
{
WaitEvent = true;
while (WaitEvent)
{
System.Threading.Thread.Sleep(5);
Application.DoEvents();
}
return Variable;
}
public object GetData(){
// start read data
...
// Wait for finish to read data
ForWaitGetData();
// finish read data
...
return MyObject;
}
Sorry, aber ich weiß nicht, wie es für mein Beispiel schreiben ... Task-task = Task.Factory.StartNew (() => { webBrowser.Document.InvokeScript (""); // setzen Sie kodieren hier die erste }). ContinueWith ((rs) => { ScriptInterface.ForWaitGetData(); // Starten Sie Ihre Veranstaltung oder alles, was Sie wollen }); – askeet
Wenn ich Ihren Code vollständig verstehe, warum haben Sie Ihren Code nicht so organisiert http://pastebin.com/BTw6SZhF, solange Sie nicht Variable verwenden, da die Rückgabe keine Zuweisungsvariable keinen Sinn haben. –
Hauptproblem ist GetData() und EventForGetData() es ist ein und derselbe Thread. Weil ein COM-Objekt EventForGetData() generiert, wenn ich GetData() verwende. Wenn GetData auf Event wartet, ruft COM daher die Funktion EventForGetData() nicht auf, wenn ich Application.DoEvent() nicht verwende, während es in GetData() wartet. – askeet