C#怎么定义一个委托,把方法当参数传进去,在线程里调用委托执行方法

 我来答
styshoo1986
2012-05-14 · TA获得超过893个赞
知道小有建树答主
回答量:832
采纳率:100%
帮助的人:256万
展开全部
线程的构造函数有Thread(ThreadStart) 和Thread(ParameterizedThreadStart) ,也就是说只支持这两种委托:public delegate void ThreadStart()和public delegate void ParameterizedThreadStart(Object obj)。
对应的方法也就只能是类似的格式,
如public void Haha()之类的。
Thread th = new Thread(Haha);
th.start();
419412500
2012-05-17 · 超过54用户采纳过TA的回答
知道小有建树答主
回答量:233
采纳率:100%
帮助的人:61.7万
展开全部
搞不懂了。。既然是传方法:把那个类,或者窗体传进去可以么。先把那方法设为Public
然后对象点 方法名不就可以么
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
我没有我不喜欢
2012-05-17
知道答主
回答量:1
采纳率:0%
帮助的人:1613
展开全部
1,首先定义一个委托和类,其中DoSomeThing是线程要执行的方法:

/// <summary>
/// 定义委托
/// </summary>
delegate void DelegateThreadFunction ();
/// <summary>
/// 线程类
/// </summary>
class DelegateThread
{
//委托对象
private DelegateThreadFunction threadFunction;
/// <summary>
/// 构造函数
/// </summary>
/// <param name="threadFunction"></param>
public DelegateThread(DelegateThreadFunction threadFunction)
{
this.threadFunction = threadFunction;
}
/// <summary>
/// 执行线程函数
/// </summary>
public void DoSomeThing()
{
if (threadFunction != null )
{
threadFunction();
}
}
}

2,定义要传入的方法,方法要和委托一致:

static void dosomething()
{
}

3,执行线程:
DelegateThread delegateThread = new DelegateThread(dosomething);
Thread th = new Thread( new ThreadStart (delegateThread.DoSomeThing));
th.Start();
你看看如何
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式