本人正学习使用多线程。想把showLeftVideo()函数作为子线程的执行内容,然而却报错:无法从void转换为System.Threading.TreadStart,请问应该如何改写?谢谢!
......
Thread readThread1;
readThread1 = new Thread(showLeftVideo());   //本句出错
readThread1.Priority = ThreadPriority.BelowNormal;
readThread1.Start();
private void showLeftVideo()
        {
            CHCNetSDK.NET_DVR_CLIENTINFO lpClientInfo = new CHCNetSDK.NET_DVR_CLIENTINFO();            lpClientInfo.lChannel = 1;
            lpClientInfo.lLinkMode = 0x0000;
            lpClientInfo.sMultiCastIP = "";
            lpClientInfo.hPlayWnd = picVideoLeft.Handle;
            IntPtr pUser = new IntPtr();
            m_lRealHandle = CHCNetSDK.NET_DVR_RealPlay_V30(m_lUserID, ref lpClientInfo, null, pUser, 1);            if (m_lRealHandle == -1)
            {
                uint nError = CHCNetSDK.NET_DVR_GetLastError();
                //DebugInfo("NET_DVR_RealPlay fail %d!");
                return;
            }
        }

解决方案 »

  1.   

    readThread1 = new Thread(showLeftVideo());
    变成
    readThread1 = new Thread(showLeftVideo);
      

  2.   

    线程见过写成:
    Thread readThread1;
    readThread1 = new Thread(showLeftVideo);
    readThread1.Priority = ThreadPriority.BelowNormal;
    readThread1.Start();也有写成:
    Thread readThread1;
    readThread1 = new Thread(new ThreadStart(showLeftVideo));
    readThread1.Priority = ThreadPriority.BelowNormal;
    readThread1.Start();请问两者在功能上有何区别?谢谢!
      

  3.   

    一样的。c#会把 readThread1 = new Thread(showLeftVideo) 自动改变为 readThread1 = new Thread(new ThreadStart(showLeftVideo))