我必须编写一个从非托管dll调用回调函数的应用程序。在Windows窗体应用程序中,将[STAThread]
替换为[MTATread]
时,回调函数将起作用,如下所示。
[MTAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MainWindow());
}
以下是代码段:
//callback function from unmanaged dll
[UnmanagedFunctionPointer(CallingConvention.Winapi)]
public delegate void funNoteInfoCallback(parameters ...);
//calling from MainWindow:
//Initialize and assignement:
funNoteInfoCallback noteInfoCallBakCallback;
noteInfoCallBakCallback = MyOnCallBackNotesInfo;
private static void MyOnCallBackNotesInfo(parameters ...)
{
//do some stuff
}
//Calling function:
SetNoteInfoCallback(handle, noteInfoCallBakCallback, Handle);
我的应用程序是使用 WPF 编写的,可以通过任何方法调用回调函数。