我製作了一個小型的winform應用程序,其中每10分鐘應用程序就會截取桌面並使用web服務以base64解碼格式發送它。在特定的時間間隔後執行任務的正確方法
我使用了一個定時器控件,每10分鐘觸發一次,並使用後臺工作人員更新UI上最後發送的屏幕截圖時間。
問題是,一段時間後,應用程序變得越來越嚴重,我做了一些Google搜索,發現Task Parallel Library是長時間運行流程的正確方法。但我不太瞭解TPL。
可以請指導我如何在我的應用程序中實現TPL 請說出正確和有效的方法。
代碼是
void timer1_Tick(object sender, EventArgs e)
{
timer1.Interval = 600000 ; //10mins
backgroundWorker1.RunWorkerAsync();
}
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
if (this.InvokeRequired)
{
this.Invoke(new MethodInvoker(delegate { screenShotFunction(); }));
}
else
{
screenShotFunction();
}
}
private void screenShotFunction()
{
printscreen = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height);
Graphics graphics = Graphics.FromImage(printscreen as Image);
graphics.CopyFromScreen(0, 0, 0, 0, printscreen.Size);
mainSendFunction();
}
private void mainSendFunction()
{
try
{
//code for webservice and base64 decoding
}
catch (Exception)
{
}
}
private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
}
這是一個病毒/惡意軟件你寫?或「生產力監控」應用程序? ;-) –
「生產力監測」,通過一切手段...現在...返回工作! – Noctis
您確定沒有異常,例如OutOfMemory或達到的系統資源限制嗎? – Pragmateek