我想在C#中实现单向调用方法。我知道在Web服务中我们可以使用ONE Way属性来实现。我已经通过Delegate进行了一些异步调用。如果任何人有一些我可以用于相同的示例代码。
答案 0 :(得分:4)
好吧,也许最简单的模拟单向调用的方法是将它推送到线程池?
ThreadPool.QueueUserWorkItem(delegate { DoSomeStuff("abc"); });
虽然上面的问题与例外问题有关,但它很容易包装:
(编辑:oops,borked异常处理!修复...)
public static void OneWay(Action action) {
if (action == null) throw new ArgumentNullException("action");
ThreadPool.QueueUserWorkItem(delegate {
try { action(); }
catch (Exception ex) {
Trace.WriteLine(ex);
}
});
}
...
OneWay(() => DoSomeStuff("abc"));
答案 1 :(得分:0)
您可以在方法调用
中包装异步委托public void MyOneWay()
{
//you can replace the anonymous function with any function you define, if you want
var d = delegate(int a) { Console.Write(a);};
d.BeginInvoke();
}
注意:这是伪代码。