当前位置: 首页 > 知识库问答 >
问题:

调用void async等于task.run?[副本]

万涵亮
2023-03-14

当我调用一个返回void的异步方法时,它是否与用task.run方法调用它时相同?我这样问是因为在FileSystemWatcher的文档中,它们提到了以下内容。

保持您的事件处理代码尽可能短。

private void OnCreated(object sender, FileSystemEventArgs e)
{
    RunSaveWithLogger(AddLocation, e.FullPath);
}

private async void RunSaveWithLogger(Func<string, Task> func, string fullPath)
{

在阅读了您的答案和评论后,我将代码改为这样。

private void OnCreated(object sender, FileSystemEventArgs e)
{
    Task.Run(() =>
    {
        RunSaveWithLogger(AddLocation, e.FullPath);
    });
}

private async void RunSaveWithLogger(Func<string, Task> func, string fullPath)
{
    try
    {
        await func.Invoke(fullPath);
    }
    catch (Exception exception)
    {
        _logger.LogError(exception, "");
    }
}

谢谢你的时间和帮助,我真的很感激。

共有1个答案

赫连卓
2023-03-14

简单的回答不!他们不一样。例如,在下面的示例中,“task.run”创建一个新线程,并在一个新线程中运行其中的每一个代码,而“async void”则不这样做。(不过,我怀疑这是否是你在寻找的答案)。

using System;
using System.Threading.Tasks;
class Solution
{
    static void Main(string[] args)
    {
        async void Method1()
        {
            while (true)
            {

            }
        }
        Task.Run(() => {
            while (true)
            {

            }
        });
        Console.WriteLine("This  will print");
        Method1();
        Console.WriteLine("This won't");
    }
}
 类似资料:
  • 后期更新:除了接受的答案之外,的处理方式也有所不同:即使没有异步,也会还原CallContext.LogicalGetData。为什么?

  • 可能重复: 为什么“[]==False”在“if not[]”成功时计算为False? 我是新的python作为每个三元运算符的python 我希望下面的代码输出为[],因为[]不等于零 如果我错了,请改正 谢谢你,赫玛

  • 注意:还有一个类似的问题,如何在task.run中调用异步方法?但是对于C#来说,选择的答案有反对票,并且没有地址configureaWait。

  • 这是我的PS-EO快照,有些进程占用2.1GB内存。它的堆的最大大小为768MB,元数据库的最大大小为256MB。我想进程占用的空间不会超过1024MB(768+256)。但事实并非如此。除了堆和元数据库,“RSS”中还包括什么?我如何监视像堆堆栈分析器一样的“RSS”内部?

  • 问题内容: 我在HashSet比较中进行了此测试,但 并未被调用 当farAway = false时我想考虑等于(检查两个点距离的函数) 完整的可编译代码,您可以对其进行测试,并说明为什么在此示例中未调用equals。 编辑 -是否有一种方法可以强制HashSet添加到调用等于? 问题答案: 如果哈希码不同,则无需调用,因为可以保证可以返回。 在此之前,从一般的合同上和: 如果根据该方法两个对象相

  • 使用场景文本识别API连接SAP Leonardo沙箱服务器时出现HTTP 400错误 我在响应对象中得到以下详细信息 {url:https://sandbox.api.sap.com/ml/scenetextrecognition/scene-text-recognition/scene-text-recognition}{Status code:400,Headers{\n Connectio