我正在跟踪this以使异步/等待工作。
但是当我将以下代码作为debug运行时,它仅显示
HandleFile输入
等待...
然后继续运行,什么也没做,在我看来HandleFileAsync
永不返回
public async Task method1()
{
Task<int> task = HandleFileAsync();
log.Info("wait...");
task.Wait();
var x = task.Result;
log.Info("print x.."+ x);
}
static async Task<int> HandleFileAsync()
{
string file = @"C:\Users\..\..\text.txt";
log.Info("HandleFile enter");
int count = 0;
// Read in the specified file.
// ... Use async StreamReader method.
using (StreamReader reader = new StreamReader(file))
{
string v = await reader.ReadToEndAsync();
// ... Process the file data somehow.
count += v.Length;
// ... A slow-running computation.
// Dummy code.
for (int i = 0; i < 1000; i++)
{
int x = v.GetHashCode();
if (x == 0)
{
count--;
}
}
}
log.Info("HandleFile exit");
return count;
}
我如何运行它来打印x
?
答案 0 :(得分:0)
看看您共享的方法,异步/等待看起来有点尴尬。
删除了第一个音符,并将空格更改回Task。由于您正在学习,所以这些事情很重要。
2nd删除task.wait命令,使用await。请参阅下面的更改。
public async Task method1()
{
log.info('Starting process');
int task = await HandleFileAsync();
log.Info("print x.."+ task);
}
我遇到了以下Getting Started with Async / Await。该博客文章与Xamarin有关,但它很好地解释了异步/等待模式。希望对您有所帮助。