4
C#プロジェクトでデータを取得するときにイベントを待つ必要があります。アプリケーションで待機イベント
プログラムがいくつかのデータを読み出す場合のGetDataその他のプログラム(EventForGetDataを呼び出す)、このデータを読み取るの最後にイベントを作成します。 したがって、私は読み込みを終了するEventForGetDataを待つ必要があります。
私はこの作業のためにこのコードを書いていますが、このコードがより最適なものになると考えています。
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;
}
申し訳ありませんが、私は私の例...タスクのタスク= Task.Factory.StartNew(()=> { webBrowser.Document.InvokeScript( "")のためにそれを書くのか分かりませんここに最初のコードを記述する })ContinueWith((rs)=> { ScriptInterface.ForWaitGetData(); //イベントや何かを起動する }); – askeet
あなたのコードを完全に理解しているのであれば、なぜ変数を返さないと意味がないので、Variableを使用しない限り、このようなコードを整理しなかったのはなぜですか? –
主な問題は、GetData()とEventForGetData()です。これは、同じスレッドです。 1つのCOMオブジェクトは、GetData()を使用するとEventForGetData()を生成するためです。したがって、GetDataがEventを待つとき、COMがGetData()で待機しているときにApplication.DoEvent()を使用しないと、COMは関数EventForGetData()を呼び出すことはありません。 – askeet