在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");
}}注意:阅读此内容的每个人都应该考虑他们是否真的想要完成这个方法。(参见#2最佳答案)如果方法必须完成,那么在某些地方,比如ASP.NET应用程序,你需要做一些事情来阻止并保持线程活着。否则,这可能会导致“忘记但永远不会实际执行”,在这种情况下,当然,根本不编写任何代码会更简单。(很好地描述了它在ASP.NET中的工作原理)
3 回答
慕运维8079593
TA贡献1876条经验 获得超5个赞
对于C#4.0及更新版本,让我觉得Ade Miller现在给出了最好的答案:在c#4.0中执行fire and forget方法的最简单方法
Task.Factory.StartNew(() => FireAway());甚至...
Task.Factory.StartNew(FireAway);要么...
new Task(FireAway).Start();哪里
FireAway
是public static void FireAway(){ // Blah...}因此,凭借类和方法名称的简洁性,这取决于您选择的那个,使得线程池版本超过6到19个字符:)
ThreadPool.QueueUserWorkItem(o => FireAway());
- 3 回答
- 0 关注
- 828 浏览
添加回答
举报
0/150
提交
取消