私は、(JAVA)サーバーをポーリングして非同期に受信するWinCE C#アプリケーションを持っています。私が達成したいのは、サーバーをポーリングし、結果が返されたらキューに入れて、その結果を別のスレッドで処理することです。私は応答を処理した後、私はサーバーに追加のPOSTを行う必要があるかもしれないので、プロセススレッドから非同期受信スレッドを分離したいと思います。別のスレッドで非同期処理が行われる
何私は今のところ持っていることは、ここのサーバへの非同期リクエストを作成し、応答を読み取るための
http://msdn.microsoft.com/en-us/library/86wf6409%28v=vs.80%29.aspx
を示したものと同様のクラスです。カスタムタイムアウトを含むようにクラスを変更しましたが、それは問題ではありません。
私のアプリで起こることは、スレッド 'pollingThread'でポーリングを開始し、サーバーからの応答を取得することです。時間切れの場合、応答はnullになります。そうでなければ、応答を処理しようとします。
応答文字列を処理する別のスレッドに応答文字列を送信したいのですが、私のpollingThreadはサーバーのポーリングを続けるために戻ります。私は別のスレッドに応答を取得する方法を把握することはできません。大きなウィンドウでMonitor.Pulseを使用する方法を知っていますが、残念ながらNETCF 3.5では使用できません。
洞察?
おかげ
EDIT:Damon8or
@私は自動リセットを使用してみましたが、何らかの理由、WAITONE(用)は、他のスレッドがすでに設定されていることを認識しません()イベントとそれを逃しますデータは通過します。ここで私が持っているものです。
AutoresetEvent _process
はstaticと宣言し、両方の方法ポールの内側
ThreadStart processMethod= new ThreadStart(process);
processingThread= new Thread(processJSONMethod);
processingThread.IsBackground = true;
processingThread.Start();
ThreadStart startMethod = new ThreadStart(Poll);
connectionThread = new Thread(startMethod);
connectionThread.IsBackground = true;
connectionThread.Start();
に表示されている、私は_process.Set()
後にサーバから文字列を受信しています。プロセスメソッドでは、私は持っています:
while (_keepPolling)
{
_process.WaitOne();
string text= MyQueue.Dequeue();
Debug.WriteLine("Returned: " + text
}
そして、私はデバッグ行が印刷されて表示されません。ポールメソッドは文字列を生成してキューに入れ、ポーリングに戻ります。
あなたの質問は何ですか? –
結果が別のスレッドで処理されている間、私は自分のpollingThreadにポーリングを続けていることを確認したい。結果がキューにプッシュされた後に結果の処理を行うスレッドを起動する方法を理解できません。 – Rishi