我正在创建一个rdp应用程序,但我保留上述错误。我尝试在加载方法之前添加[STATHREAD]
,我尝试过这个:
[System.STAThread]
private void rdp_Load(object sender, EventArgs e)
{
System.Threading.Thread a = new System.Threading.Thread(rdp_connect);
a.SetApartmentState(System.Threading.ApartmentState.STA);
a.IsBackground = true;
a.Start();
}
rdp_connect方法:
[STAThread]
public void rdp_connect()
{
axMsRdpClient2a1.Server = mainform.addr;
axMsRdpClient2a1.UserName = mainform.uname;
IMsTscNonScriptable enc_connection = (IMsTscNonScriptable)axMsRdpClient2a1.GetOcx();
enc_connection.ClearTextPassword = mainform.pass;
try
{
axMsRdpClient2a1.Connect();
}
catch
{
MessageBox.Show("Could not connect.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
}
我也注意到表单的设计者会在错误发生时显示,但我认为这并不重要。有人可以帮帮我吗?
答案 0 :(得分:0)
你不能将[STAThread]应用于任意方法(嗯,你可以,但它没有做任何事情)。以下是MSDN关于[STAThread]的内容:
将此属性应用于入口点方法(C#和Visual Basic中的Main()方法)。它对其他方法没有影响。要设置您在代码中开始的线程的单元状态,请在启动线程之前使用Thread.SetApartmentState方法。