如果这样的话,就直接使用异步线程吧, 用委托delegate来实现
解决方案 »
- 关于服务器 server的
- 向用户控件传递参数的问题,第一个解决的得分
- C#中,关于TCPIP流networkStream.Write的写入和networkStream.Read的读的同步问题
- -----------急啊急,高手,关于DateGrid的一个问题?-----------------------
- 如何实现命令行程序中等待异步事件?
- 怎么把dataset中多个表的数据插入到数据库
- 如何让4个pictureBox自动循环跳转
- 菜鸟问题:sqlserver中如果为了方便而用中文作为字段名,在应用中会有什么麻烦吗?
- ArrayList的BinarySearch怎么了?
- 能控制水晶报表区中各控件的属性吗?
- C# Socket 问题 在线等急求大神指点
- 求c#代码
比如说,水壶烧水,水烧开了报警,报警触发新的动作(你把水壶里的水倒进杯子里喝)你的代码run,执行完毕后触发一个事件,事件实现你if(num=="ok"){}要做的事情
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
string num = "";
private void btnOK_Click(object sender, EventArgs e)
{
Thread th=new Thread(new ThreadStart(run));
th.Start();//开始线程
}
}
private void run(){
//读取数据库的内容。省略最终渠道一个值。
//用MySQLData代表一个从数据库里取出来的一个值赋给num。
num = MySQLData;
this.BeginInvoke((Action) delegate{
//这里怎么线程同步通过线程里取到的值进行逻辑处理
if(num=="ok"){
};
});
}
后续操作,应该在“后续”才调用,绝不是在 btnOK_Click 执行的。在 btnOK_Click 里只要启动线程,启动要执行的方法,就立刻结束了!“取完这个值,我还想在继续在button这个主线程里处理逻辑”这是胡乱安排逻辑。
private void btnOK_Click(object sender, EventArgs e)
{
Thread th=new Thread(new ThreadStart(run));
th.Start();//开始线程
}
private void run(){
//读取数据库的内容。省略最终渠道一个值。
//用MySQLData代表一个从数据库里取出来的一个值赋给num。
num = MySQLData;
this.BeginInvoke((Action) delegate{
//这里怎么线程同步通过线程里取到的值进行逻辑处理
if(num=="ok"){
};
});
}