是否可以呼叫一個方法,女巫可以從呼叫它的地方中斷一個回圈?
例如:
void Run()
{
while (true)
{
Stop();
}
}
void Stop()
{
break;
}
uj5u.com熱心網友回復:
不,break是一個陳述句,必須直接出現在回圈內(這是語法定義它的方式。如果它出現時沒有封閉回圈,則會出現語法錯誤)。
不能在方法中使用它來跳出外回圈。但是,您可以更改方法以回傳 bool:
void Run()
{
while (true)
{
if (Stop())
{
break;
}
}
}
bool Stop()
{
return true; // return true or false, depending on whether you'd like to break out of the loop.
}
uj5u.com熱心網友回復:
這是不可能的。但是您可以使用回傳 a 的方法bool來指示是否應取消回圈(顯示在其他答案中)。另一種方法是使用 a CancellationTokenSourcewhich 可以在執行緒或任務中使用,但甚至可以在同步回圈中使用:
void Run(CancellationTokenSource cancelToken)
{
while (true)
{
if (cancelToken.IsCancellationRequested)
break;
Console.WriteLine("Still working...");
Thread.Sleep(500);
}
}
演示:
var cts = new CancellationTokenSource();
// cancel it after 3 seconds, just for demo purposes
cts.CancelAfter(3000);
Program p = new Program();
p.Run(cts);
Console.WriteLine("Finished.");
這會在 3 秒后中斷回圈。如果您想在某個條件后中斷,您可以呼叫該Cancel方法。
uj5u.com熱心網友回復:
這是不可能的,但如果你想要其他方法,你可以這樣做
void Run()
{
while (true)
{
if(Stop())
break;
}
}
bool Stop()
{
//some calculation that returns true if the loop needs to break
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/516931.html
標籤:C#循环方法休息
上一篇:有條件的回圈
下一篇:在回圈中使用其他列中的值
