C#WPF中的MTAThread调用非托管回调函数

时间:2019-02-18 04:17:00

标签: c# wpf callback unmanaged

我必须编写一个从非托管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 编写的,可以通过任何方法调用回调函数。

0 个答案:

没有答案