如何在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分钟内都很好,但之后就挂断了。

谁能帮帮我吗?

提前感谢。

如何在winforms c中使用长时间运行的进程

尝试这个

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开始向上计数,所以它永远不会小于或等于零。这将解决挂起的问题,但一旦解决了这个问题,博客类的进度报告程序应该会帮助解决剩下的问题。