【发布时间】:2015-05-05 18:27:44
【问题描述】:
我一直在查看 Stackoverflow 线程 ActiveX control without a form,在取得了一些成功之后,我遇到了障碍。
我似乎能够创建我的 AX 实例,但我不确定如何访问该事物以调用方法。这是我的实现:
class DirectAudio : UserControl, IDisposable
{
private myAxControl myAx;
private Thread axThread;
public DirectAudio()
{
BuildAx();
}
private void BuildAx()
{
axThread = new Thread((ThreadStart) delegate
{
myAx = new PanasonicOCXControl();
myAx.CreateControl();
System.Windows.Forms.Application.Run();
});
axThread.SetApartmentState((ApartmentState.STA));
axThread.IsBackground = true;
axThread.Start();
}
public void Dispose()
{
axThread.Abort();
aX.Dispose();
}
public void Connect(CameraConfig cameraConfig)
{
try
{
myAx.Invoke(new Action(() => myAx.Disconnect())); //how do I do this??
}
catch (Exception ex)
{
Logger.ToDebug(ex);
}
}
}
当 Connect() 方法中的 myAx.Invoke 运行时,我得到以下信息:
{"Invoke or BeginInvoke cannot be called on a control until the window handle has been created."}
我应该如何调用 myAx?
【问题讨论】:
-
你没有消息循环。
-
哦,我明白了,我错过了 Application.Run()。我添加了它(并编辑了我的帖子),但仍然得到相同的结果。
-
在这里查看我的完整指南stackoverflow.com/questions/37310418/…