首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

关于线程的有关问题请问

2012-01-15 
关于线程的问题请教?我想做这样的工作Thread t new Thread(new ThreadStart(showProgress)) //显示进度

关于线程的问题请教?
我想做这样的工作
Thread t = new Thread(new ThreadStart(showProgress)); //显示进度条
t.Start();
GetData(); //是一个耗时操作
t.Abort();

void showProgress()
{
//显示进度条
}

一般GetData()是放在单独线程中,在主线程中显示进度条,
但是我想反过来,在主线程中GetData(),在单独的线程中显示进度条

但那个t一瞬间就执行完了,还是达不到效果,我该如何处理? 在showProgress中用Timer也不行,反正那个showProgress一到最后一个}号就挂了.

[解决办法]
void showProgress() 

while(!m_RunEnd)
{
//进度条
}


bool m_RunEnd=false;
GetData()
{
//操作
 
//完成
m_RunEnd=true;
}

[解决办法]
主线程是UI线程

你用另外个线程操作UI界面的控件比较麻烦。

做好的方法就是用委托异步调用那个耗时的方法,给一个回调方法。
主线程就负责UI就好了
[解决办法]
getData做完了通知滚动条结束
[解决办法]

探讨
getData做完了通知滚动条结束

[解决办法]
如果你是主线程去做GetData,那干嘛不直接在GetData里控制进度条?显示进度条只是你getdata的一个步骤而已。

[解决办法]
谁有没有更好的方法啊
[解决办法]
这样做只能是所有的事儿都由主线程来做,因为既做了耗时的操作又更新了界面(虽然你是在另外的线程操作的界面但最后还是由主线程来完成)


[解决办法]
BackgroundWorker 
DoWork里面 执行GetData()
同时触发ReportProgress();
然后在ProgressChanged事件里显示进度条 具体的可以查查BackgroundWorker 的用法


[解决办法]

1楼的办法似乎可行,先试试.

[解决办法]
lu guo ..

热点排行