我正在try 使用异步/等待功能,但有不同的执行路由,我想知道这样的事情是否可能发生.
我有以下代码:
public class Example
{
public void DoSomething()
{
Console.WriteLine("DoSomething Start:");
DoMore();
Console.WriteLine("DoSomething End:");
}
public async void DoMore()
{
Console.WriteLine("DoMore Start:");
await Task.Run(() => Thread.Sleep(1000));
Console.WriteLine("DoMore End:");
}
}
当我拨打DoSomething
的时候,我会得到:
DoSomething Start:
DoMore Start:
DoSomething End:
DoMore End:
我希望执行DoSomething的线程等待in a non blocking way等待DoMore结束,然后继续执行DoSomething(类似于在DoMore调用中使用等待). 生成的输出应为:
DoSomething Start:
DoMore Start:
DoMore End:
DoSomething End:
我可以使用以下代码:
public class Example
{
public async void DoSomething()
{
Console.WriteLine("DoSomething Start:");
await Task.Run(() => DoMore());
Console.WriteLine("DoSomething End:");
}
public async void DoMore()
{
Console.WriteLine("DoMore Start:");
await Task.Run(() => Thread.Sleep(1000));
Console.WriteLine("DoMore End:");
}
}
但这为DoMore使用了一个不同的线程,这是我不需要的.