我制作了一个小型 Winform 应用程序,每隔 10 分钟,应用程序会截取桌面截图并使用 web 服务以 base64 解码格式发送。
我使用了一个计时器控件,它每 10 分钟触发一次,并使用后台工作人员更新 UI 上最后发送的屏幕截图时间。
问题是应用程序在一段时间后挂起,我做了一些谷歌搜索,发现任务并行库是长时间运行进程的正确方法。但是我对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)
{
}