我有一個WinCE C#應用程序輪詢(JAVA)服務器異步進入的消息。我想要實現的是我想要輪詢服務器,並在返回結果時將其排隊,然後將結果處理到另一個線程中。我想從進程線程中分離出異步接收線程,因爲在處理完響應之後,我可能必須對服務器進行額外的POST。異步結果在另一個線程
我有什麼,現在就在這裏
http://msdn.microsoft.com/en-us/library/86wf6409%28v=vs.80%29.aspx
出用於製造異步請求到服務器和讀取響應類似於一個類。我已經修改了該類以包含自定義超時,但這應該不重要。
在我的應用程序中會發生什麼,我開始在線程'pollingThread'中進行輪詢,並從服務器獲取響應。如果超時,響應將爲空,否則我嘗試處理響應。
我想將響應字符串發送給另一個可以處理它的線程,而我的pollingThread返回以繼續輪詢服務器。我無法弄清楚如何獲得響應到另一個線程。我知道如何在大窗口上使用Monitor.Pulse,但不幸的是,它在.NETCF 3.5上不可用。
任何見解?
感謝
編輯:@ 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