当前位置: 代码迷 >> VB Dotnet >> 自定义控件中使用OpenFileDialog产生ThreadStateException异常,怎么解决
  详细解决方案

自定义控件中使用OpenFileDialog产生ThreadStateException异常,怎么解决

热度:205   发布时间:2016-04-25 02:23:39.0
自定义控件中使用OpenFileDialog产生ThreadStateException错误,如何解决。
在自定义控件中要使用OpenFileDialog控件选择文件,但提示“在可以调用OLE前,必须将当前线程设置为单线程单元(sta)模式......”的错误。
原代码:
Private Sub Button1_click(......)
  OpenFileDialog1.filename=""
  OpenFileDialog1.Filter="数据文件(*.mdb)|*.mdb"
  OpenFileDialog1.ShowDialog()   '在此产生错误
End Sub

在网上查了一下,做如下修改以单线程调用,消除错误:
<stathread()> _
Private Sub Button1_click(......)
  Dim s as New System.Thread(new system.threading.threadstart(addressof test))
  s.setapartmentstate(apartmentstate.sta)
  s.start()
End Sub

Private Sub test()
  OpenFileDialog1.filename=""
  OpenFileDialog1.Filter="数据文件(*.mdb)|*.mdb"
  OpenFileDialog1.ShowDialog() 
End Sub

问题是选择的文件名称Filename如何返回到调用程序(button1_click)中,不能把后续代码全部放到test过程中吧?
------解决方案--------------------