第一次接触线程:
        目前需求功能: 打开程序,程序时刻监听键盘事件,还有一个就是可以点击button调用一个Dll 模块,现在在调用DLL模块我想放到线程中处理,不知这样可不可以,(简易)示例代码,如下所示,谢高手指点private void Form1_Load(object sender, System.EventArgs e)
{
Thread trd = new Thread(new ThreadStart(this.ThreadTask));
trd.IsBackground = false;
trd.Start();
}
private void ThreadTask()
{
MessageBox.Show("load测试");
OA_Incept_test.inceptMainFm fr=new OA_Incept_test.inceptMainFm("0678","000");
fr.Show();
MessageBox.Show("end测试");
}就是像这样,当窗体打开时,加载窗体一闪而过,就没有了,不知道怎么处理,请高手指点!谢谢!

解决方案 »

  1.   

    不好意思!由于测试,这个没有Button只放在load事件里了!
      

  2.   

    没有必要用线程调用DLL
    假若在使用Hook的过程中因为调用DLL而出问题,那么就考虑一下是不是因为这个DLL文件点用资源太多;
    假若是以上原因,那么建议两种解决办法:
    1、优化你的DLL;
    或者
    2、改造你的程序,将DLL中的代码移植到你的主程序中。
      

  3.   

    private void Form1_Load(object sender, System.EventArgs e)
    {        Thread trd = new Thread(new ThreadStart(threadone));//2
    trd.IsBackground =true;
    trd.Start();
    }
    void threadone()
    {
    this.Invoke(new AddNodeDelegate(ThreadTask));

    }
    delegate void AddNodeDelegate(); 但能过这种方法窗口可以显示,但在窗口关闭时,窗体反应好象很慢,请高手继续指点!谢谢!同时,键盘接收不到录入的字符?
      

  4.   

    TO:stonehe(和我行)
       什么意思呀?你知不知道呀?
      

  5.   

    直接用按钮或者在Load事件里打开窗口就可以,没必要用线程。
      

  6.   

    像加载页面一般是不用多线程,而是在
    private void InitializeComponent()
    {
    }
    加载比较好点吧
      

  7.   

    TO: Anhowe(流星) ; JasonHeung(拥有一切也不过就这样笑着哭) 
        不知道大家有没有用过键盘勾子,也不知是电脑速度原因,还是程序原因,当直接加载时,键盘就会捕捉不到字符了?
      

  8.   

    你没有显示窗体,在load函数的最下面显示窗体就可以了
      

  9.   

    TO:gmq517()
       怎么没有显示呢,在线程里面呀?
      

  10.   

    我说的是你没有显示窗体,不是没有显示MessageBox,可能是因为你的窗体没有显示,导致MessageBox,不能正常使用