我有一个Dialog Box
(导入程序),我用它来选择要导入应用程序的文件。此Dialog Box
(导入程序)还有另一个对话框(文件),它是OpenFileDialog
。
代码运行类似
//Main File
if (Importer.ShowDialog == DialogResult.Ok){
// Start Import
}
//Importer File
OnDoubleClick of TextBox
if(File.ShowDialog == DialogResult.Ok){
// Find File
}
然而,在第二个ShowDialog
我总是收到以下错误:
An unhandled exception of type 'System.Threading.ThreadStateException' occurred in System.Windows.Forms.dll
Additional information: Current thread must be set to single thread apartment (STA) mode before OLE calls can be made. Ensure that your Main function has STAThreadAttribute marked on it. This exception is only raised if a debugger is attached to the process.
这是一个线程问题,我应该如何处理它。
我期待着您的回复。 问候 詹姆斯
- 更新一些代码来帮助这一切都在第一个Form.ShowDialog()
中private void fileNametxt_DoubleClick(object sender, EventArgs e)
{
myth = new Thread(new System.Threading.ThreadStart(ChooseFile));
myth.ApartmentState = ApartmentState.STA;
myth.Start();
while(myth.ThreadState != ThreadState.Aborted || myth.ThreadState != ThreadState.Stopped)
{
fileNametxt.Text = FileName;
}
fileNametxt.Text = FileName;
}
private void ChooseFile()
{
openFileDialog.ShowDialog();
if (openFileDialog.FileName != "")
{
FileName = openFileDialog.FileName.Trim();
}
myth.Abort();
}
如何停止线程并更新屏幕上的文本。线程似乎只能与varibles交谈而不是UI控件。
答案 0 :(得分:4)
要修复此标记,请使用属性Main()
标记Program
类的[STAThread]
方法。
后续阅读:CA2232: Mark Windows Forms entry points with STAThread。
在这种情况下,当然Main()
方法 是您的切入点,无论框架是什么。
答案 1 :(得分:0)
出现此错误。构建解决方案不会引发错误,但调试会引发该错误。 我尝试创建新的解决方案并为新解决方案添加令人兴奋的项错误已修复!