| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1874 人关注过本帖
标题:关于子线程运行,导致主线程假死的问题
只看楼主 加入收藏
sanderpeng
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2007-5-15
收藏
 问题点数:0 回复次数:3 
关于子线程运行,导致主线程假死的问题

==================== 类 cls.cs ===========================
API api;
string txt;

public API(API a,string t)
{
//传递的对象和参数
api = a;
txt = t;
}

//线程的运行方法
public void api_run()
{
//这里的write是api的一个方法,向某设备写入数据,返回值0为成功
//写入设备数据较耗时,平均每次需5秒左右,尝试3次失败后终止
int i = 3;
for (i = 0; i < 3; i++)
{
if (api.write(txt) == 0) break;
}
}

==================== 主窗体 main.cs ======================
//定义对象
API api;
cls c;
Thread t1 = null;

//窗体启动初始化
private void main_Load(object sender, EventArgs e)
{
//初始化api
api.Init();
}

private void main_FormClosing(object sender, FormClosingEventArgs e)
{
//释放资源
api.Stop();
}

//运行线程
private void button1_Click(object sender, EventArgs e)
{
//传递API对象及参数
api = new API();
c = new cls(api, "测试");

t1 = new Thread(new ThreadStart(c.api_run));

//不管是不是后台线程,一样会假死
thread.IsBackground = true;

thread.start();
}

================================================================

如上例子,向cls类传递API对象和txt参数后,再创建子进程处理API的write方法,但却发现放入线程后依然占用主线程,导致主线程假死。
是不是我上面有哪里的处理不对了呢?

搜索更多相关主题的帖子: 线程 api API txt 假死 
2007-05-15 14:54
sanderpeng
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2007-5-15
收藏
得分:0 
对了,补充一下。API是一个串口设备的接口DLL。
2007-05-15 14:59
sanderpeng
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2007-5-15
收藏
得分:0 
问题用另外的方法解决了,但总觉得怪怪的,还是期待有人能帮忙解答上面的疑惑。
2007-05-15 17:44
sanderpeng
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2007-5-15
收藏
得分:0 

顶最后一次~~

2007-05-16 11:13
快速回复:关于子线程运行,导致主线程假死的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.013518 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved