我有一個C#主窗口窗口,它監聽UDP端口的消息。收到所需信息後,它將啓動另一個表單(視頻表單)。這個錄像帶由一個可以播放視頻的axWindowsMediaPlayer1組成。ActiveX控件'6bf52a52-394a-11d3-b153-00c04f79faa6'不能實例化,因爲當前線程不在單線程公寓
但是無論何時它收到消息啓動視頻窗體,它將收到一個UDP錯誤「ActiveX控件」6bf52a52-394a-11d3-b153-00c04f79faa6'不能實例化,因爲當前線程不是在單線程公寓「。
private void initCommunication()
{
CheckForIllegalCrossThreadCalls = false;
try
{
// For receiving messages
//We are using UDP sockets
serverSocket = new Socket(AddressFamily.InterNetwork,
SocketType.Dgram, ProtocolType.Udp);
//Assign the any IP of the machine and listen on port number
IPEndPoint ipEndPoint2 = new IPEndPoint(IPAddress.Any, listeningPort);
//Bind this address to the server
serverSocket.Bind(ipEndPoint2);
IPEndPoint ipeSender = new IPEndPoint(IPAddress.Any, 0);
//The epSender identifies the incoming clients
EndPoint epSender = (EndPoint)ipeSender;
//Start receiving data
serverSocket.BeginReceiveFrom(byteData, 0, byteData.Length,
SocketFlags.None, ref epSender, new AsyncCallback(OnReceive), epSender);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "UDP Error",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
#region UDP OnReceive
private void OnReceive(IAsyncResult ar)
{
try
{
IPEndPoint ipeSender = new IPEndPoint(IPAddress.Any, 0);
EndPoint epSender = (EndPoint)ipeSender;
serverSocket.EndReceiveFrom(ar, ref epSender);
//Transform the array of bytes received from the user into an
//intelligent form of object Data
Data msgReceived = new Data(byteData);
switch (msgReceived.strMessage)
{
case "1":
btnPlayVideo_Click(null,null);
break;
}
txtLog.Text += msgReceived.strName + " : " + msgReceived.strMessage + "\r\n";
txtLog.SelectionStart = txtLog.Text.Length;
txtLog.ScrollToCaret();
serverSocket.BeginReceiveFrom(byteData, 0, byteData.Length, SocketFlags.None, ref epSender,
new AsyncCallback(OnReceive), epSender);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "UDP OnReceive Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
#endregion
的誤差在這條線)拋出 axWindowsMediaPlayer1 =新AxWMPLib.AxWindowsMediaPlayer(;
我在網上搜索過,如何創建一個STA?
我的主要方法已經有[STAThread]了。默認情況下,由C#窗體窗體創建的program.cs已經有了它... – humansg
@humansg然後哪個線程引發這個異常? –
可能是異步udp線程? – humansg