==================== 类 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方法,但却发现放入线程后依然占用主线程,导致主线程假死。
是不是我上面有哪里的处理不对了呢?