我正在創建一個應用程序,其中應用程序將繼續檢查我的gmailbox,如果有任何郵件到達,它會通知我,當前我正在使用計時器將在每10secs後被解僱,似乎應用程序仍然掛起,因爲它會檢查對於新郵件,並且UI沒有響應,有沒有什麼辦法可以在任何新郵件到達時檢查它,或者當我的應用程序保持響應時,即使定時器檢查新郵件時,我也會在這裏爲最後2周。基於Windows的.net應用程序中的計時器控制?
請任何人有任何想法或知道一段代碼。將不勝感激任何幫助。
我正在創建一個應用程序,其中應用程序將繼續檢查我的gmailbox,如果有任何郵件到達,它會通知我,當前我正在使用計時器將在每10secs後被解僱,似乎應用程序仍然掛起,因爲它會檢查對於新郵件,並且UI沒有響應,有沒有什麼辦法可以在任何新郵件到達時檢查它,或者當我的應用程序保持響應時,即使定時器檢查新郵件時,我也會在這裏爲最後2周。基於Windows的.net應用程序中的計時器控制?
請任何人有任何想法或知道一段代碼。將不勝感激任何幫助。
您是否正在對UI的單獨線程執行檢查?如果沒有,你會看到你描述的竅門。
編輯:每肯的建議,增加一些細節。
下面是WinForms應用程序中線程描述的鏈接。
http://www.yoda.arachsys.com/csharp/threads/winforms.shtml
你可以把你的計時器的地方,但你需要生成一個線程做定時器現在正在做的工作。在UI中使用該線程中的數據可能存在問題。如果是這樣,您需要查看BeginInvoke和InvokeRequired - 或將任務的結果存儲在成員變量(可能需要lock關鍵字)中。希望有所幫助。
你能詳細說說你的意思嗎?我只是使用計時器的tick事件進行檢查。 – Abbas
http://msdn.microsoft.com/en-us/magazine/cc164015.aspx#S1 – groundh0g
如果該任務在主UI線程上執行,則在該任務完成之前不會發生任何其他事件。這包括刷新應用程序的小部件或響應用戶輸入。您的郵件檢索需要在另一個線程上進行,您需要將該結果返回到主UI線程以在您的小部件中進行處理。 – groundh0g