我的问题是为什么延迟方法不起作用(整个操作不等待4秒)并且60%没有显示在lable1内部.
更准确地说,操作的顺序应该是这样的,整个操作应该花费8秒.但是它需要4秒,就Thread.Sleep(4000)在里面LongTimeMethod1()工作正常
LongTimeMethod1()//delay for 4 sec,show 60%
delay()//delay for 4 sec
LongTimeMethod()//40% imidiatly
Run Code Online (Sandbox Code Playgroud)
我知道我可以用await和async编写代码,但我想知道我在这段代码中做错了什么.
private void button1_Click(object sender, EventArgs e)
{
CallBigMethod();
label1.Text =@"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); …Run Code Online (Sandbox Code Playgroud) 在我的求职面试中,面试官要求我更改控制台输出以打印"B"而不触及主方法和控制台!
这可能吗?(我试图改变切入点,但这不正确)我不知道如何回答这个问题
class Program
{
static void Main(string[] args)
{
Console.WriteLine("A");
}
}
Run Code Online (Sandbox Code Playgroud)