我们平时碰到很多,同步的主程序中需要用到一些工具类是异步的,这样主程序还不能加上异步的 task等标识,就会报错.而直接调用似乎又等不到返回结果.

将调用包装在Task.Run<>(async () => await FunctionAsync()); 

实际winform 项目内参考的下边的例子 作为备忘

public class LogReader
{
    ILogger _logger;
 
    public LogReader(ILogger logger)
    {
        _logger = logger;
    }
 
    public LogEntity GetLog()
    {
        Task<LogEntity> task = Task.Run<LogEntity>(async () => await GetLogAsync());
        return task.Result;
    }
 
    public async Task<LogEntity> GetLogAsync()
    {
        var result = await _logger.GetAsync();
        // more code here...
        return result as LogEntity;
    }
}

 

posted on 2023-05-27 16:51  小石头的一天  阅读(41)  评论(0编辑  收藏  举报