Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Winform中的ThreadStateException,尤其是OpenFileDialog中的ThreadStateException_C#_Winforms - Fatal编程技术网

C# Winform中的ThreadStateException,尤其是OpenFileDialog中的ThreadStateException

C# Winform中的ThreadStateException,尤其是OpenFileDialog中的ThreadStateException,c#,winforms,C#,Winforms,根据MSDN,ThreadStateException发生的主要原因是新线程在主线程中创建了OpenFileDialog的工具 private void button_FileExercise_Click(object sender, EventArgs e) { OpenFileDialog fileDialog = new OpenFileDialog(); fileDialog.InitialDirectory = "C:\\"; fileDialog.Filter

根据MSDN,ThreadStateException发生的主要原因是新线程在主线程中创建了OpenFileDialog的工具

private void button_FileExercise_Click(object sender, EventArgs e)
{
    OpenFileDialog fileDialog = new OpenFileDialog();
    fileDialog.InitialDirectory = "C:\\";
    fileDialog.Filter = "Text Files (*.txt)|*.txt|All Files (*.*)|*.*";
    if (fileDialog.ShowDialog() == DialogResult.OK)
    {
    }
}

ThreadStateException发生在“if”处,因此,我如何才能像它一样解决程序,THX

如果不设置[STAThread]您可能需要通过线程单元安全来实现单线程


单击按钮时是否会发生这种情况?或者是从其他线程调用该方法?当我单击按钮时会发生这种情况。但是,当我使用[STA]类型设置函数Main()时,它工作得很好。当使用多线程时,我如何解决这个问题?显示UI的任何线程都必须声明自己是STA。并运行调度程序循环Application.run()。苛刻的要求,例外只是提醒你,你做得不对。