Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# .net核心web api控制器生命周期_C#_Asp.net Core Webapi - Fatal编程技术网

C# .net核心web api控制器生命周期

C# .net核心web api控制器生命周期,c#,asp.net-core-webapi,C#,Asp.net Core Webapi,您好,我了解注入服务的生命周期,比如scoped,在请求完成后,服务不可用。但是参数(如示例中的myObject)在它们被销毁时是什么?如果我将此参数传递给长异步任务,并且不等待结果,那么任务中可能会出现null问题 public class mycontroller : ControllerBase { private MyService _myservice; public mycontroller(MyService myservice) { _m

您好,我了解注入服务的生命周期,比如scoped,在请求完成后,服务不可用。但是参数(如示例中的myObject)在它们被销毁时是什么?如果我将此参数传递给长异步任务,并且不等待结果,那么任务中可能会出现null问题

public class mycontroller : ControllerBase
{
    private MyService _myservice;

    public mycontroller(MyService myservice)
    {
        _myservice = myservice;
    }

    [HttpPost]
    public IActionResult Post([FromBody] MyObject myObject)
    {
        _myservice.dosomethinglongasync(myObject);
        return OK();
    }
}

任务将继续保留对
myObject
的引用,直到完成为止。你不应该面对一个事先就被摧毁的问题


但是这是一个糟糕的设计。您无法检查任务是否完成等。在不等待异步任务的情况下启动它们是不好的做法。

正常的.net对象生命周期规则适用。一旦不再有引用,实例将被GCed。至于如何在asp.net内核中执行fire/forget操作,还有一些关于这方面的介绍。