我有一个while循环,它检查true / false。而且我有if block.if块计数到300到0.我想在它的0和另外两个地方时杀死线程。我看了论坛,但我的方法看起来有点不同。但我试过中止但没有工作。如果我的帖子有错误请编辑.thx!
void Test()
{
Thread thread = new Thread(() =>
{
try
{
int countdown = 300;
while (true)
{
Thread.Sleep(1000);
paymentService.CheckPayment(pdId);
if (result.Complete == false)
{
countdown--;
if (countdown == 1)
{
//kill thread
}
}
if (result.Complete == true)
{
//kill thread
NavigationService.Navigate(new Uri("Pages/success.xaml", UriKind.Relative));
}
}
}
catch (Exception)
{
//kill thread
Application.Current.Shutdown();
}
});
thread.Start();
}
答案 0 :(得分:5)
return;
会做 - 你只需要退出Thread运行的方法;
答案 1 :(得分:2)
您可能需要使用任务而不是线程。这是一个可能的解决方案:
void Main()
{
Test();
}
void Test()
{
var t = new Task(() => {
var rnd = new Random(DateTime.Now.Millisecond);
int countdown = 5;
while (true)
{
Thread.Sleep(10);
var nextRand = rnd.Next(5);
Console.WriteLine(nextRand);
if (nextRand == 0)
{
countdown--;
if (countdown == 1) return;
}
}
});
var t2 = t.ContinueWith(_ => { });
t.Start();
t2.Wait();
Console.WriteLine("Thread ended");
}