相关疑难解决方法(0)

在C#中执行fire and forget方法的最简单方法是什么?

我在WCF中看到他们有[OperationContract(IsOneWay = true)]属性.但是WCF似乎有点缓慢而且很重要,只是为了创建一个非阻塞功能.理想情况下会出现类似静态无效的阻塞MethodFoo(){},但我认为不存在.

在C#中创建非阻塞方法调用的最快方法是什么?

例如

class Foo
{
    static void Main()
    {
        FireAway(); //No callback, just go away
        Console.WriteLine("Happens immediately");
    }

    static void FireAway()
    {
        System.Threading.Thread.Sleep(5000);
        Console.WriteLine("5 seconds later");
    }
}
Run Code Online (Sandbox Code Playgroud)

注意:阅读此内容的每个人都应该考虑他们是否真的想要完成这个方法.(参见#2最佳答案)如果方法必须完成,那么在某些地方,比如ASP.NET应用程序,你需要做一些事情来阻止并保持线程活着.否则,这可能会导致"忘记但永远不会实际执行",在这种情况下,当然,根本不编写任何代码会更简单.(很好地描述了它在ASP.NET中的工作原理)

.net c# nonblocking

134
推荐指数
9
解决办法
8万
查看次数

无需等待结果即可从Web API调用另一个Web API

有没有办法Http在我自己的Web API中激活对外部Web API的调用而无需等待结果?

我的场景是我真的不在乎调用是否成功,我不需要该查询的结果.

我目前在我的一个Web API方法中做了类似的事情:

var client = new HttpClient() { BaseAddress = someOtherApiAddress };
client.PostAsync("DoSomething", null);
Run Code Online (Sandbox Code Playgroud)

我不能把这段代码放在一个using语句中,因为在这种情况下调用不会通过.我也不想调用.Result()该任务,因为我不想等待查询完成.

我试图理解做这样的事情的含义.我全身知道这真的很危险,但我不确定为什么.例如,当我的初始查询结束时会发生什么.将IIS处置线程和客户端对象,这会导致查询的另一端出现问题吗?

c# asp.net-web-api

5
推荐指数
1
解决办法
2829
查看次数

标签 统计

c# ×2

.net ×1

asp.net-web-api ×1

nonblocking ×1