串口与多线程问题 急啊。 void time(){ long i=1; while(i<=100000000) i++;}这个函数是能执行3秒,但不知道是不是合适, 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你的问题在于你在循环里面发送,每次都要2秒钟,所以这个线程就一直在循环里面,接受的程序就得不到响应了。应该让发送的线程、接受的线程和界面的线程分开,这样在发送和接受的时候界面才不会死掉。至于多线程的同步问题,有很多方法的,csdn里面有很多,具体情况要看你的程序 这里怪怪的... //发完一条必须返回一条所以在这里最好控制一下时间 //发一条 2 秒, 接受一条2 秒 然后接着判断下一条 感觉发送和接收的过程似乎基本还是同步的嘛, 同意楼上的观点, 主要的问题应该是放置主线程卡在发送循环里面... public void StartD(){} 本身应该是异步执行的.. 至于循环里面的延迟可以用 Sleep(); 代码帮帮忙啊,你MSN和QQ多少? 发送的时候可以是线程,也可以不是.但接收的时候一定要用线程.在循环的过程中,用Application.DoEvents()刷新.如果是两秒的时间的话应该是不太难的.但对硬件来讲,2秒钟的时间好象有点太长了.如果你能用到2秒钟的时间的话,你可以用查询方式就行了. private Thread t;this.t = new Thread(new ThreadStart(target));this.t.Start();private void target(){ // Add your codes here}这只是一个最简单的用法而已,具体怎么用还要看你自己了,还有,不要老是指望别人会给你写代码的 private Thread t;this.t = new Thread(new ThreadStart(target));this.t.Start();private void target(){ // Add your codes here}连参数都没有,不能传,就算我想别的半法传,那我接受是用委托定义的怎么办? 建立一个线程,上面很多人都写了语法了,在线程中执行循环,不会影响主界面。线程中可以用 Thread.Sleep(2000) 延迟来等待。 private Thread t;this.t = new Thread(new ThreadStart(StartD));this.t.Start();StartD{ while(...) { com.send(...) Thread.Sleep(2000); // Sleep 的时候,该线程阻塞,在主程序中可以做其它事;可以延时2秒多一点,确保返回的数据已经发出 ReadCom() // 读接收的数据 }} C#如何将Richtextbox中的内容用RTF格式输出 >>>>>>>>>>>读取16进制值<<<<<<<<<<<<<<< 接下来怎么写,关于网站自动注册用户 关于发布.net2005中的水晶报表发布问题 将一个字符串格式化为4位的字符串,高位用0填充。怎么写格式化字符串? 关于C#的函数问题 C#写的COM组件,在VBSEDIT调用时候,怎么样才能显示智能感知 使用windows发送电子传真,对方能成功接收。问题怎么增加一个语音提示:“您有一封传真,请接收” 全部由C#完成的访问统计系统,大家评评 []? 如何打印一个PDF文档 请问一下,哪位朋友办过ICP的,给传一个资料行吗
应该让发送的线程、接受的线程和界面的线程分开,这样在发送和接受的时候界面才不会死掉。
至于多线程的同步问题,有很多方法的,csdn里面有很多,具体情况要看你的程序
这里怪怪的...
//发完一条必须返回一条所以在这里最好控制一下时间
//发一条 2 秒, 接受一条2 秒 然后接着判断下一条 感觉发送和接收的过程似乎基本还是同步的嘛,
同意楼上的观点, 主要的问题应该是放置主线程卡在发送循环里面...
public void StartD(){}
本身应该是异步执行的.. 至于循环里面的延迟可以用 Sleep();
this.t = new Thread(new ThreadStart(target));
this.t.Start();private void target()
{
// Add your codes here
}这只是一个最简单的用法而已,具体怎么用还要看你自己了,还有,不要老是指望别人会给你写代码的
this.t = new Thread(new ThreadStart(target));
this.t.Start();private void target()
{
// Add your codes here
}连参数都没有,不能传,就算我想别的半法传,那我接受是用委托定义的怎么办?
this.t = new Thread(new ThreadStart(StartD));
this.t.Start();StartD
{
while(...)
{
com.send(...)
Thread.Sleep(2000); // Sleep 的时候,该线程阻塞,在主程序中可以做其它事;可以延时2秒多一点,确保返回的数据已经发出
ReadCom() // 读接收的数据
}
}