假设我有一个功能
public void SendMessage(Message message)
{
// perform send message action
}
我可以为这种功能创建委托吗?如果是这样,我如何在使用委托时传递消息?
在我的例子中,Thread使用该函数。每当有事件发生时,我都需要向服务器发送一条消息,以保存记录。我还需要让它在后台运行,这样它就不会影响应用程序。但是,线程需要使用委托
Thread t = new Thread(new ThreadStart(SendMessage));
我不知道如何将消息传递给委托。感谢。
答案 0 :(得分:11)
不确定
public delegate void DelWithSingleParameter(Message m);
可以使用以下
传递消息DelWithSingleParameter d1 = new DelWithSingleParameter(this.SomeMethod);
d1(new Message());
同样,@ Mehrdad在框架的较新版本中指出,您不再需要定义此类委托。而是重用现有的Action<T>
委托进行此类操作。
Action<Message> d1 = new Action<Message>(this.SomeMethod);
d1(new Message());
答案 1 :(得分:3)
当然,只需这样定义委托:
delegate void SendMessageDelegate(Message message);
然后像往常一样调用它:
public void InvokeDelegate(SendMessageDelegate del)
{
del(new Message());
}
答案 2 :(得分:2)
您需要使用ParameterizedThreadStart。见这里:
http://msdn.microsoft.com/en-us/library/system.threading.parameterizedthreadstart.aspx
答案 3 :(得分:1)
当然,请参阅here以获取示例。
答案 4 :(得分:0)
你也可以这样做
object whatYouNeedToPass = new object();
Thread t = new Thread( () =>
{
// whatYouNeedToPass is still here, you can do what ever you want :)
});
t.Start();