如何在winforms c中使用长时间运行的进程
本文关键字:长时间 运行 进程 winforms | 更新日期: 2023-09-27 18:28:07
我正在为我的短信应用程序使用背景。
我创建了一个需要连续发送消息的应用程序。
当我使用背景时。我的申请被挂了,我不知道为什么,
我的代码是
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
//mycode
}
private void backgroundWorker1_RunWorkerCompleted(
object sender, RunWorkerCompletedEventArgs e)
{
backgroundWorker1.CancelAsync();
backgroundWorker1.RunworkAsync();
}
后来我试过这个
public void Thread()
{
Thread D = new Thread(BackgroundCode);
D.Start();
}
public void BackgroundCode()
{
for (int i5 = 1; i5 > 0; i5 += 1)
{
//mycode
}
}
这两个在2或3分钟内都很好,但之后就挂断了。
谁能帮帮我吗?
提前感谢。
尝试这个
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
while(true)
{
//your sms code
//call CancelAsync() here if you want to get out!!!!
}
}
private void backgroundWorker1_RunWorkerCompleted(
object sender, RunWorkerCompletedEventArgs e)
{
//donot include RunWorkerAsync() and CancelAsync() in this method!
}
这是一篇有点长的文章,但它似乎很适合您的问题。
基本上,它展示了如何使用BackgroundWorker或任务并行库(TPL是我的建议)来实现这一点
对于TPL,您创建了一个ProgressReporter类,该类将用于在继续运行任务的同时将消息传递回主线程。
此外,你的for循环永远不会结束,因为它说在i5大于0时运行。而且,它从1开始向上计数,所以它永远不会小于或等于零。这将解决挂起的问题,但一旦解决了这个问题,博客类的进度报告程序应该会帮助解决剩下的问题。