C# 不阻塞应用程序的MAPI调用

C# 不阻塞应用程序的MAPI调用,c#,multithreading,mapi,C#,Multithreading,Mapi,我的应用程序正在通过MAPI呼叫发送电子邮件: [DllImport("MAPI32.DLL")] static extern int MAPISendMail(IntPtr sess, IntPtr hwnd, MapiMessage message, int flg, int rsv); 在其他地方: m_lastError = MAPISendMail(new IntPtr(0), new IntPtr(0), msg, how, 0); 除了一个问题外,此操作效果良好:outlook

我的应用程序正在通过MAPI呼叫发送电子邮件:

[DllImport("MAPI32.DLL")]
static extern int MAPISendMail(IntPtr sess, IntPtr hwnd, MapiMessage message, int flg, int rsv);
在其他地方:

m_lastError = MAPISendMail(new IntPtr(0), new IntPtr(0), msg, how, 0);
除了一个问题外,此操作效果良好:outlook窗口将完全阻止应用程序。
这似乎是预期的行为,但我不想让它这样做。有什么想法吗


我尝试从后台线程调用
MAPI
,但似乎不可能。

这就是简单MAPI的工作方式-使用OOM代替(
Application.CreateItem
/
MailItem.Display(false)
)。

这就是简单MAPI的工作方式-使用OOM代替(
Application.CreateItem
/
MailItem.Display(false)
).

不过,这只适用于Outlook。我不相信MAPI没有解决办法。Outlook是MAPI。至少在Windows上的市场份额是这样。Outlook使用OOM,其他客户端使用简单MAPI。不过,这只适用于Outlook。我不相信MAPI没有解决办法。Outlook是MAPI。至少在市场份额上是这样在Windows上。Outlook使用OOM,其他客户端使用简单MAPI。