zoukankan      html  css  js  c++  java
  • OpenFileDialog 类的ShowDialog() 错误的解决

    首先,一个类里,有个linkLabel1

    private OpenFileDialog openFileDialog1;
    private DialogResult result;

    private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
            {

                openFileDialog1 = new OpenFileDialog();
                string patch = Application.StartupPath + "\\LOG\\";
                openFileDialog1.InitialDirectory = patch;
                openFileDialog1.Filter = "xls files (*.xls)|*.xls";

                result = openFileDialog1.ShowDialog();

                if (result == DialogResult.OK)
                {
                    if (openFileDialog1.FileName != "")
                    {
                        Process.Start(openFileDialog1.FileName);
                    }
                   
                }

               
            }

    就会报 
    在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式。请确保您的 Main 函数带有 STAThreadAttribute 标记。 只有将调试器附加到该进程才会引发此异常。

    在测试小程序里没有问题,当移到大程序里就这样的问题了。可能是线程多的原因。解决办法就是添加线程,代码如下

    private Thread invokeThread;

    private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
            {
                openFileDialog1 = new OpenFileDialog();
                openFileDialog1.InitialDirectory = patch;
                openFileDialog1.Filter = "xls files (*.xls)|*.xls";

                invokeThread = new Thread(new ThreadStart(InvokeMethod));
                invokeThread.SetApartmentState(ApartmentState.STA);
                invokeThread.Start();
                invokeThread.Join();

                if (result == DialogResult.OK)
                {
                    if (openFileDialog1.FileName != "")
                    {
                        Process.Start(openFileDialog1.FileName);
                    }

                }
            }

    private void InvokeMethod()
            {
                result = openFileDialog1.ShowDialog();
            }

    问题得到解决

  • 相关阅读:
    native和webview切换
    appium API接口
    appium自动化测试之UIautomatorviewer元素定位
    appium的兼容问题
    adb常用命令
    java include包含指令例子
    设备与设备之间 的数据传输
    sitecore(keyvaluelanguage)的灵活应用
    java eclipse 连接数据库全过程
    java1200例-文字的探照灯效果
  • 原文地址:https://www.cnblogs.com/verna/p/1955276.html
Copyright © 2011-2022 走看看