线程问题再问,小弟迷惑了很久了
我抛出两个线程去分别读取记录,然后在主线程中处理这个写记录集,但是我在抛出线程后join(),等待两个线程读取完记录,这个时候,窗体就会假死在那里,请问我应该如何等待我的子线程而不让窗体死在那里呢?我迷惑了好久了啊,请各位给我解答! 问题点数:20、回复次数:8Top
1 楼Firestone2003(笨笨小猪)回复于 2005-04-03 17:36:53 得分 0
在主窗体里创建写记录集的线程Top
2 楼wolfofsky(风之武)回复于 2005-04-03 18:10:40 得分 0
建议你使用方法的异步调用Top
3 楼koenemy(小妮她爹--给孩子起个名太费劲)回复于 2005-04-03 18:47:50 得分 0
private void a_Click_1(object sender, System.EventArgs e)
{
Thread thread = new Thread(new ThreadStart(你在这个方法里读写记录));
thread.Start();
}
WEB窗体可不行,WIN窗体可以看到结果。Top
4 楼resp(百无禁忌)回复于 2005-04-03 19:06:21 得分 0
谢谢各位了,不过如3楼的朋友所写,我克音开一个记录的线程,但是我如何在同一个主线程中获得这个记录集呢?
我想要在一个函数里面,如
int GetData()
{
Thread thread 1= new Thread(new ThreadStart(获得记录1));
thread1.Start();
Thread thread2 = new Thread(new ThreadStart(获得记录2));
thread2.Start();
retrun 记录个数
}
我应该如何获得记录数呢?
我原来的做法是在 retrun 记录个数 前面加
thread1.join()
thread2.join()Top
5 楼xielk(xielk)回复于 2005-04-03 20:27:49 得分 0
http://dev.csdn.net/article/65/65032.shtm
Top
6 楼resp(百无禁忌)回复于 2005-04-03 21:37:08 得分 0
谢谢 xielk(xielk) 的例子,不过按照你的例子的思路,我应该在我的子线程中,返回给主线程我的记录集信息了,我现在要问了我究竟应该如何在主线程中return信息呢,我的子线程可以通知主线程return嘛?Top
7 楼resp(百无禁忌)回复于 2005-04-04 09:15:21 得分 0
?没有人回答嘛?Top
8 楼lampson123(微软)回复于 2005-04-04 10:00:02 得分 20
只能用异步的调用!
delegate DataSet myDelegate(...参数);
myDelegate m;
AsyncCallback a; 异步完成后的回调方法;
DataSet ds = null;
m = new myDelegate(...你的功能函数);
a = new AsyncCallback(...异步完成后的回调函数);
m.beginInvoke(a,null); 开始异步读取;
你的功能函数(IAsyncResult i)
{
ds = m.EndInvoke(i);
}Top




