C#.Net 线程

来源:百度知道 编辑:UC知道 时间:2024/09/24 00:45:04
Thread thrBar = new Thread(new ThreadStart(Progress));
thrBar.Start();
线程内容Progress()执行完之后,界面就处于死机状态,鼠标一单击就死。
怎么回事儿?
线程执行完后,其实要弹出一个Excel保存路径通用对话框,但是一直死机,只有终止程序,才看见对话框其实已经打开,不知道是不是由于死机在主窗体后边藏在。请高手指点一下,怎么解决?谢了!

/// <summary>
/// 浮动进度条
/// </summary>
private void Progress()
{
try
{
do
{
//Excel作成状况(blnThread = false:未完成)
if (progressBar1.Value < progressBar1.Maximum)
{
Thread.Sleep(500);
progressBar1.Value += 20;
}
else
{
Thread.Sleep(500);
progressBar1.Value = 100;
Thread.Sleep(100);
progressBar

应该是多想成竞争资源产生的问题
你把while (blnThread == false);
this.progressBar1.Value = this.progressBar1.Maximum;
改成
Lock(object) //object 自己定义个静态对象,枷锁用
{
while (blnThread == false);
this.progressBar1.Value = this.progressBar1.Maximum;
}
在另一个用到blnThread 的线程中也加上

你的循环里面,没有把blnThread置为TRUE啊,所以循环一直在执行咯

在循环体里面加上Application.DoEvents();试试