private void btnOK_Click(object sender, EventArgs e)
        {
            Assembly asm = Assembly.GetExecutingAssembly();
            string path = asm.Location.Remove(asm.Location.LastIndexOf("\\")) + "\\";
            if (cbProgram.Checked)
            {
                System.Diagnostics.Process.Start(path + "\\JYG.StartCenter.exe");
            }
            Thread thread = new Thread(new ThreadStart(OpenManaul));//直接打开太慢了,开个线程
            thread.Start();            this.Close();
        }        //打开帮助手册
        private void OpenManaul()
        {
            Assembly asm = Assembly.GetExecutingAssembly();
            string path = asm.Location.Remove(asm.Location.LastIndexOf("\\")) + "\\";
            if (cbHelp.Checked)
            {
                System.Diagnostics.Process.Start(path + "\\help.doc");
            }
        }
我不开启线程,直接System.Diagnostics.Process.Start(path + "\\help.doc");打开这个文档,是可以打开的,但是速度太慢。如果用了线程,那么结果就是只打开了word,没有打开help.doc,这是为什么呢?

解决方案 »

  1.   

    我不开启线程,直接System.Diagnostics.Process.Start(path + "\\help.doc");打开这个文档,是可以打开的,但是速度太慢。如果用了线程,那么结果就是只打开了word,没有打开help.doc,这是为什么呢?代码没有问题应该可以打开的.
    建议用System.Diagnostics.Process.Start打开,最简化的操作,其它的都交给系统处理了.
      

  2.   

    我个人认为Process是多线程的,你只用一个线程来代替一个进程是不行的。System.Diagnostics.Process.Start是开启一个进程,而不是线程。用线程需要改动OpenManaul()函数this.webBrowser1.Navigate(fileName);
      

  3.   

            private void btnOK_Click(object sender, EventArgs e)
            {
                Assembly asm = Assembly.GetExecutingAssembly();
                string path = asm.Location.Remove(asm.Location.LastIndexOf("\\")) + "\\";
                if (cbProgram.Checked)
                {
                    System.Diagnostics.Process.Start(path + "\\JYG.StartCenter.exe");
                }
                Thread thread = new Thread(new ThreadStart(OpenManaul));//直接打开太慢了,开个线程
                thread.Start();            this.Close();
            }        //打开帮助手册
            private void OpenManaul()
            {
                Thread.sleep(5000);
                Assembly asm = Assembly.GetExecutingAssembly();
                string path = asm.Location.Remove(asm.Location.LastIndexOf("\\")) + "\\";
                if (cbHelp.Checked)
                {
                    System.Diagnostics.Process.Start(path + "\\help.doc");
                }
            }这样行吗
      

  4.   

    不知道具体行不行,反正我知道直接用Process.Start("*.doc");是可以打开的,这个可以一试,貌似挺管用的
      

  5.   

    Application.StartupPath 不是更简单么?