我正在为我的短信应用程序使用背景。
我创建了一个需要不断发送消息的应用程序。
当我使用background.My应用程序被绞死时,我不知道它为什么,
我的代码是
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分钟,但之后就会挂起。
请有人可以帮助我。
提前致谢。
答案 0 :(得分:1)
试试这个
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!
}
答案 1 :(得分:0)
This is a bit of a long post,但它似乎很适合你的问题。
基本上,它显示了如何使用BackgroundWorker或任务并行库(TPL将是我的建议)来实现这一点
对于TPL,您将创建一个ProgressReporter类,该类将在类中用于将消息传递回主线程,同时继续运行任务。
此外,你的for循环永远不会结束,因为它说要在i5大于0时运行。并且,它从1开始计数,因此它永远不会小于或等于零。这将解决您的问题,但是一旦您解决了这个问题,博客课程中的进度报告者应该会帮助完成其余工作。