目的很简单,就是线程(不是Form的成员函数)运行时会有一些状态,想把它显示在一个Form的文本框里
请问怎么做呀?
第一步先不用考虑多线程都要更新一个框的情况
请问怎么做呀?
第一步先不用考虑多线程都要更新一个框的情况
解决方案 »
- 请问专家~~我写一个CS架构得自动更新帮帮我
- 高手指点有关cookie的问题
- datagridview中,如何选中一行或者一个数据
- 问个简单问题,给点建议也行 ______标题要长 才能吸引眼球
- 正则表达式分析字符串<w:tbl>.....</w:tbl>,请哪个高手帮写个
- 看了精华区的blog,windows应用程序的资料好像很少,大家给初学者一些建议。
- ListView不能选中行?
- 有没有什么情况,不适合用List<T>而应该用ArrayList的?
- 新建一个web application 报错
- 近来看看
- 请问C#调用C的DLL函数
- 我在一个解决方案里建了两个项目,其中一个项目的命名空间在另一个项目中为什么不识别呢?
using System.Threading;namespace Test
{
public partial class fmMain : Form
{
public fmMain()
{
InitializeComponent();
}
Thread th1;
private void fmMain_Load(object sender, EventArgs e)
{
th1 = new Thread(ChangeText);
}
private delegate void textDel(string txt);
private void ChangeText(object args)
{
//5秒后更改
Thread.Sleep(5000);
textDel del = delegate(string str)
{
textBox1.Text = str;
};
textBox1.Invoke(del, new object[1] { "更改了" });
} }
}
:看了你的话我觉得我长满了络腮胡子,满身的体毛..
请问怎么访问textBox1.text啊?
没看懂
能解释一下你的程序不?
class TestClient
{
private Thread workThread;
private SynchronizationContext mainThreadSynContext;
public event EventHandler Connected; public TestClient()//构造函数当然是主线程执行的
{
mainThreadSynContext = SynchronizationContext.Current;
workThread = new Thread(new ThreadStart(DoWork));
} public Connect()
{
workThread.Start();
}
private void OnConnected(object state)//由于是主线程的同步对象Post调用,这个是在主线程中执行的
{
if (Connected != null)
Connected(this, EventArgs.Empty);
} private void DoWork()//这个是workThread线程执行的
{
//这儿做些事(连接什么的) //这而干完了
if (Connected != null)
mainThreadSynContext.Post(new SendOrPostCallback(OnConnected), null);
}
} public partial class fmMain : Form
{
public fmMain()
{
InitializeComponent();
} private void fmMain_Load(object sender, EventArgs e)
{
TestClient client = new TestClient();
client.Connected += new EventHandler(client_Connected);
} private void client_Connected(object sender, EventArgs e)
{
textBox1.Text = ...;
}
} 你要传什么参数,继承EventArgs增加你要的参数就行了
private ShowMessageHandler showMsg;
private void ShowMessageFunc(string msg)
{
textbox1.text=msg;
}
在线程中调用下面方法
用异步调用textbox1.invoke(showMsg,new objcet[]{message});//message是线程中要显示的状态
class myEvent: EventArgs
{
public string str;
}
修改了
private void client_Connected(object sender, myEvent e)
提示
client.Connected += new EventHandler(client_Connected);
有问题
请问,我是不是还要继承一个EventHandler阿?
{
public string str;
} delegate void MyEventHandler(object sender, MyEventArgs e);
这样