用委托接收子线程的返回值。 protected string res=null;Thread th = new Thread(new ThreadStart(delegate { ThMethod(ip); }));th.Start();private delegate string ResBack(string label);private void ThMethod(string ip){ res =ip+"Hello";}在button_click中如何用这个委托去获取res的值? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 一个winform,有两个button,一个开始,一个结束,一个label。当点击开始的时候,执行一个很复杂的动作,很耗时。但是界面不能死,所以只能用多线程。点击开始,开始按钮隐藏,显示结束按钮。如果不点击结束,则把时间显示出来。如果点击了结束。结束那个复杂的操作,显示消耗的时间。。真没人回答吗? private void button1_Click(object sender, EventArgs e) { string ip = "12"; var th = new Thread(new ThreadStart(delegate { ThMethod(ip); })); th.Start(); } protected string res; private void ThMethod(string ip) { res = ip + "Hello"; Invoke(new ResBack(xx), new object[] {res}); } private string xx(string label) { Text = label; return label; } private delegate string ResBack(string label); MSDN上很经典的例子(看里面第二个Fabonacicc计算的例子)backgroundworker计时用System.Diagnostics.Stopwatch 或者用Control.Invoke或者BeginInvoke+EndInvoke+回调 protected Thread th;private void button1_Click(object sender, EventArgs e){ th = new Thread(new ThreadStart(delegate { ThMethod(ip, tele, teled); })); th.Start();}private delegate void ResBack(string label); private void SetLabValue(string text) { if (label3.InvokeRequired) { ResBack back = new ResBack(SetLabValue); this.Invoke(back, new object[] { text }); } else { label3.Text = text; } } private void ThMethod(string ip, string tele, string teled) {//得到结果}这样写对着没。 你说的这种情况不用委托也没问题啊,不就类似于这样吗?private void button1_Click(object sender, EventArgs e) { //添加当前主线程名称“main” Thread.CurrentThread.Name = "main"; //通过Thread类的构造函数线程,并指示一个委托让线程 执行指定方法 Thread t = new Thread(new ThreadStart(Add)); t.Name = "子线程"; //开始新线程 t.Start(); Debug.WriteLine(Thread.CurrentThread.Name); } void Add() { for (int i = 0; i < 100000; i++) { //输出当前执行操作的线程名 Debug.WriteLine(Thread.CurrentThread.Name+i); } } Debug.WriteLine(Thread.CurrentThread.Name);你这样必须要等线程结束呢。。我是要随时结束线程得到值。 iis6上.netframework4 的网页打开问题 急!服务器应用程序不可用(0x80131902错误)解决方法 asp.net 调用后台方法 MsChart控件X轴文字颠倒 一个小问题!.....[非常急] StreamWriter写文件时怎样才能将原来的内容清除 编了个站内qq,想让大家批评指教!求一上传空间! 还是没有解决呀!!! c#语言中怎样使用cookie?急用 treeview的问题 怎样保证未登录的用户不可进入除Login.aspx页面以外的任何页面 表单提交时获取iframe页面的一些值。
当点击开始的时候,执行一个很复杂的动作,很耗时。但是界面不能死,所以只能用多线程。
点击开始,开始按钮隐藏,显示结束按钮。如果不点击结束,则把时间显示出来。
如果点击了结束。结束那个复杂的操作,显示消耗的时间。。真没人回答吗?
{
string ip = "12";
var th = new Thread(new ThreadStart(delegate { ThMethod(ip); }));
th.Start();
}
protected string res; private void ThMethod(string ip)
{
res = ip + "Hello"; Invoke(new ResBack(xx), new object[] {res});
} private string xx(string label)
{
Text = label;
return label;
} private delegate string ResBack(string label);
backgroundworker
计时用System.Diagnostics.Stopwatch
或者BeginInvoke+EndInvoke+回调
protected Thread th;
private void button1_Click(object sender, EventArgs e)
{
th = new Thread(new ThreadStart(delegate { ThMethod(ip, tele, teled); }));
th.Start();
}
private delegate void ResBack(string label);
private void SetLabValue(string text)
{
if (label3.InvokeRequired)
{
ResBack back = new ResBack(SetLabValue);
this.Invoke(back, new object[] { text });
}
else
{
label3.Text = text;
}
}
private void ThMethod(string ip, string tele, string teled)
{//得到结果}
这样写对着没。
不就类似于这样吗?
private void button1_Click(object sender, EventArgs e)
{
//添加当前主线程名称“main”
Thread.CurrentThread.Name = "main"; //通过Thread类的构造函数线程,并指示一个委托让线程 执行指定方法
Thread t = new Thread(new ThreadStart(Add));
t.Name = "子线程";
//开始新线程
t.Start();
Debug.WriteLine(Thread.CurrentThread.Name);
}
void Add()
{
for (int i = 0; i < 100000; i++)
{
//输出当前执行操作的线程名
Debug.WriteLine(Thread.CurrentThread.Name+i); }
}
我是要随时结束线程得到值。