ShowDialog() 错误的解决

showdialog() 错误的解决

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();
        }

问题得到解决

 

时间: 2024-10-23 16:33:45

ShowDialog() 错误的解决的相关文章

vs2012-求问,"lnk1158 无法运行rc.exe"错误怎么解决?

问题描述 求问,"lnk1158 无法运行rc.exe"错误怎么解决? 我用的VS2012,一直用的好好地,但是今天突然在编译x64程序的时候出现"lnk1158 无法运行rc.exe"错误.相同的win32程序则未出现此错误. 重装编译器和windows sdk之后无法解决,windows sdk路径应该正确.求问有没有什么解决方法. 解决方案 重装VS2012,看来是被SDK影响了rc.exe工具. 解决方案二: 或者卸掉SDK,直接用VS2012自带的rc.e

vs2010新建项目是表如下图的错误怎么解决?按图中的路径寻找不到activitylog.xml

问题描述 vs2010新建项目是表如下图的错误怎么解决?按图中的路径寻找不到activitylog.xml

Win8系统安装过程中提示Error Code:0x0000005D错误的解决方法

  win8系统虽然在慢慢退出市场,不过还是有不少的用户喜欢Win8系统的风格,而在Win7升级win8系统的过程中会出现一些问题,有位用户遇到错误提示Error Code:0x0000005D的问题,该如何解决此问题呢?下面小编研究整理安装Win8系统提示Error Code:0x0000005D错误的解决方法. 错误信息如下: Your PC needs to restart. Please hold down the power button Error Code:0x0000005D P

eclipse-在Eclipse中出现For input string: ""错误如何解决

问题描述 在Eclipse中出现For input string: ""错误如何解决 在Eclipse中出现For input string: ""错误如何解决,请各位高手帮帮忙,非常感谢! 解决方案 http://zhidao.baidu.com/question/547632046.html 解决方案二: http://zhidao.baidu.com/question/30630016.html 解决方案三: For input String:"&q

使用Donetbar控件,出现“设计器加载程序未提供根组件 但没有指出原因”错误如何解决

问题描述 使用Donetbar控件,出现"设计器加载程序未提供根组件 但没有指出原因"错误如何解决 使用donetbar控件搭建winform窗体应用程序,在用到SuperTabControl的SelectedTabChanged方法时,只要后台代码有改动,设计界面就会变成空白,去掉这个方法就正常,请问这是什么问题,如何解决? 解决方案 应该是你的dotnetbar是破解的或者版本和你用的.net框架不匹配造成的.

Win8系统硬盘参数错误怎么解决?

  Win8系统硬盘参数错误怎么解决?          方法步骤如下: 1.硬盘连接电脑,打开所在盘符,提示"无法访问,参数错误" 2.下载 DiskGenius 软件,在DiskGenius软件中可以看到硬盘信息. 3.在DiskGenius中的"文件浏览"中可以看到文件信息. 4.现在可以确定是硬盘存在坏道需要 对硬盘进行修复. 5.打开"运行" 6.在里面输入"CHKDSK H: /F /R"(H:是硬盘所在盘符./R

ASP代码出现80040e14错误的解决方法

好久没有写ASP代码了,今天在做一个简单的留言本时,出现了一下错误: Microsoft office Access Database Engine 错误 '80040e14' Insert INTO 语句的语法错误. 上网查了一下资料,才知道该错误是由一下原因造成的:    1)将保留字用作名称.大多数数据库都有一组保留字.例如,"name"是保留字,因而不能用于数据库中的列名称.    2)名称中使用特殊字符.特殊字符的示例包括: . / * : ! # & - ?    

使用存储过程时一个错误的解决方法。

存储过程|错误|解决 这段时间用了一下C++ Builder ,在调用存储过程的时候遇到了一些问题,问了很多地方都没有找到答案,最后还是靠自己,现在拿出来和大家分享. 示例代码:    StoredProc1->Params->Clear();   StoredProc1->Params->CreateParam( ftSmallint, "@m1",   ptInput);   StoredProc1->Params->CreateParam( f

SQL Server 数据库使用备份还原造成的孤立用户和对象名‘xxx’无效的错误的解决办法

server|备份|错误|对象|解决|数据|数据库 介绍SQL Server 数据库使用备份还原造成的孤立用户和对象名'xxx'无效的错误的解决办法          在使用数据库的过程中,经常会遇到数据库迁移或者数据迁移的问题,或者有突然的数据库损坏,这时需要从数据库的备份中直接恢复.但是,此时会出现问题,这里说明几种常见问题的解决方法.一.孤立用户的问题比如,以前的数据库的很多表是用户test建立的,但是当我们恢复数据库后,test用户此时就成了孤立用户,没有与之对应的登陆用户名,哪怕你建立