子子线程控制winform窗体控线显示无效

大家好:
首先有一个线程做图像采集:

imgProc_Task = new Thread(new ThreadStart(ImageProcessing));
imgproc_Task.start();

然后,在 ImageProcessing中没采集一次图像我会调用一个方法刷新一个控件的显示:
ShowlblImageCount_Invoke(intReadImageCount.ToString());
这个方法实现为:
public void ShowlblImageCount_Invoke(string str)
{
try
{
if (this.lblImageCount.InvokeRequired)
{
LblStrAction inst = new LblStrAction(Showlabel);

                this.BeginInvoke(inst, this.lblImageCount, str);
            }
            else
            {
                Showlabel(this.lblImageCount, str);
            }
        }
        catch (Exception e)
        {

        }
    }

            void Showlabel(Label lbl, string str)
    {
        try
        {
            lbl.Text = str;
        }
        catch (Exception ex)
        {

        }
    }
            到这里为止是没有问题的

            然后同样在ImageProgressIng这个方法里新建一个线程:
            Thread th2 = new Thread(new ThreadStart(new ThreadDeal((Bitmap)(bimage[bufferReadind].Clone())).ImageDealThread));
                        th2.Start();
            其中ThreadDeal是一个封装方法的类,方法名叫ImageDealThread.
            到此为止相当于是一个子子线程了。

            执行ImageDealThread会调用一个方法,控制其他控件刷新:                
            ShowlblLogedCount_Invoke((VarSVCamera.V_I.g_IntLogedCount++ + 1).ToString());
                            使用的方法跟之前的一样
                            问题出现了,如果按照上面的逻辑去做,第一个控线显示是可以视线的,第二个就没反应了
                            在第二个实现方法中的control.invokeRequired一直为false.

1个回答

解决了,虽然步子到为啥,希望对别人有点用:
Thread t = new Thread(delegate(){ DealImage((Bitmap)(bimage[bufferReadind].Clone())); });
如上这样去新建一个线程。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!