在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式。请确保您的 Main 函数带有 STAThreadAttribute 标记。
.net winform程序调试时报如下错误:
System.Threading.ThreadStateException
HResult=0x80131520
Message=在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式。请确保您的 Main 函数带有 STAThreadAttribute 标记。 只有将调试程序附加到该进程才会引发此异常。
Source=<无法计算异常源>
StackTrace:
<无法计算异常堆栈跟踪>
以下为截图:
按提示将当前线程设置为STA模式,如下所示,
Thread.CurrentThread.SetApartmentState(ApartmentState.STA);
但还报如下错误:
既然主线程不行,那么新建一个线程呢?于是如下进行了一番操作。
protected void BtnUpdateExcel_Click(object sender, EventArgs e)
{
Thread thread = new Thread(new ThreadStart(ImportData));
thread.SetApartmentState(ApartmentState.STA);
thread.Start();
while (thread.ThreadState==ThreadState.Stopped)
{
GvUpdateData.DataSource = dtUpdate;
GvUpdateData.DataBind();
}
}
Datatable dtUpdate;
public void ImportData()
{
dtUpdate = GetDataFromExcelByConn(true);
}
如上后正常……但为什么要如此,还有些疑惑,记之以备忘。
赞 (0)