如何退出無回傳值方法的死回圈
uj5u.com熱心網友回復:
重啟計算機即可退出uj5u.com熱心網友回復:
break;結束回圈,continue;跳過本次回圈,進行下一次回圈,我不知道我理解對沒有uj5u.com熱心網友回復:
那就外面包一層唄,直接用執行緒就好,不過為了展示一下現代風格的task我就用task做demo了
private CancellationTokenSource cts;
//buttion1,啟動呼叫
private async void button1_Click(object sender, EventArgs e)
{
cts = new CancellationTokenSource();
Task.Run(() =>
{
using (cts.Token.Register(Thread.CurrentThread.Abort))
{
try
{
test();
}
catch (ThreadAbortException exception)
{
Trace.WriteLine("呼叫執行緒已被終止,內部無限呼叫中止");
}
}
}, cts.Token);
}
//button2停止呼叫
private void button2_Click(object sender, EventArgs e)
{
cts?.Cancel();
}
uj5u.com熱心網友回復:
void test()
{
while (true)
{
Trace.WriteLine(DateTime.Now);
Thread.Sleep(500);
}
}
按你的要求,給個無限回圈的test方法
uj5u.com熱心網友回復:
小白表示沒看懂 qwq 我按你這個代碼打出來后點擊按鈕還是沒反應的說
uj5u.com熱心網友回復:
class loop
{
public void shuchu()
{
string str = Convert.ToString(Console.ReadLine());
int len = str.Length;
Console.WriteLine("長度為{0}",len);
shuchu();
return 0;
}
}
class Xunhuan
{
static void Main(string[] args)
{
loop p = new loop();
p.shuchu();
Console.ReadLine();
}
}
這是我自己的死回圈,有回傳值的方法可以退出,想知道void方法怎么退
uj5u.com熱心網友回復:
小白表示沒看懂 qwq 我按你這個代碼打出來后點擊按鈕還是沒反應的說本來就沒反應
Trace 類是給俺們跟蹤除錯的,不是在程式界面輸出的。他顯示在你除錯的時候給vs下面的那個輸出視窗輸出資訊。這里用這個只是表示這個test在運行中,每500ms給輸出視窗輸出一個DateTime.Now表明,test方法活著。
button2停止以后,他就不輸出了
uj5u.com熱心網友回復:
回圈中寫一個觸發條件.條件達到后拋出例外或者break即可退出回圈uj5u.com熱心網友回復:
宣告一個公共變數
private static bool flag = true;
private void start_Click(object sender, EventArgs e){
while (flag)
{
}
}
private void stop_Click(object sender, EventArgs e){
flag=false;
}
uj5u.com熱心網友回復:
break只能退出里面的回圈,并不能退出方法 。轉載請註明出處,本文鏈接:https://www.uj5u.com/net/251066.html
標籤:C#
