最近在做一个WinForm的程序。是一个批量刷机工具,从USB中获取指定状态的设备,然后批量刷机。
界面中有一个表格,里面一行记录是一个设备。点击批量刷机按钮后,我启了n(=设备数)条Thread
[C# code]
foreach(string item in deviceList)
{
    Thread t = new Thread(Shuaji);
    t.Name = item;
    t.Start(item);
}
Shuaji方法里就是调用cmd命令,使用了Process,并用Process的OutputDataReceived事件(应该是这个名称)来接收。
[C# code]
private void TOutputDataReceived(object sender,DataReceivedArgs e)
{
    RefreshState(e.Data,Thread.CurrentThread.Name);//问题就在这里
}
使用RefreshState方法更新表格记录的当前状态,但是Thread.CurrentThread.Name取到的值是IO Worker ThreadPool(应该是),并不是我启线程时的名字。
问题:
1.现在这个思路有没有问题?如果有问题帮忙讲一个新思路。
2.如果没有问题,因为我是通过线程名字来更新状态,如何获取这个名字?
代码不在身边,肯定会有错误,但大致是这样,请各位讲讲思路。谢谢
(操作环境是Ubuntu11.04 mono,所以稍有区别,先不关心环境,咱们讲讲思路先)
(异步功能未加入,数据刷新后期肯定要考虑)
本贴注重思路和部分实现,望大家不吝赐教C#多线程Ubuntu