我的問題是爲什麼延遲方法不起作用(整個操作不等待4秒),60%沒有顯示在lable1內部。延遲繼續現在正在工作
爲了更精確的操作順序應該是這樣和整個操作應採取8 seconds.but它需要4秒,剛內LongTimeMethod1()
Thread.Sleep(4000)
工作
LongTimeMethod1()//delay for 4 sec,show 60%
delay()//delay for 4 sec
LongTimeMethod()//40% imidiatly
我知道我可以寫代碼只是等待和異步,但我想知道我在這段代碼中做錯了什麼。
private void button1_Click(object sender, EventArgs e)
{
CallBigMethod();
label1.Text [email protected]"Waiting ...";
}
private async void CallBigMethod()
{
var result = await BigMethod();
label1.Text = result;
}
private Task<string> BigMethod()
{
return Task.Factory
.StartNew(() => LongTimeMethod1())
.ContinueWith((pre) => Delay())
.ContinueWith((pre) => LongTimeMethod());
}
private string LongTimeMethod()
{
return "40%...";
}
public async Task Delay()
{
await Task.Delay(4000);
}
private string LongTimeMethod1()
{
Thread.Sleep(4000);
return "60%...";
}
@PetSerAl它只是解決了時間問題,但它不能解決顯示60%的問題 –