小编joh*_*gan的帖子

如何在不阻塞 Windows 消息的情况下等待事件?

这是一个关于在等待事件时保持 C# 线程处于活动状态的问题。

我正在编写一个 C# 应用程序,它将启动一个 Outlook 实例(或者如果有一个活动的实例,则重新使用任何现有实例),创建一个邮件项并显示它,然后等待邮件项的关闭事件或发送事件。

该应用程序不是在 Outlook 内部运行的加载项,而是从 Outlook 外部执行以创建 Outlook 实例和邮件项。

由于我的应用程序不是从 Outlook 的 gui 内运行,而是启动 Outlook 的 gui,因此我需要以某种方式保持我的进程处于活动状态,直到收到事件(发送或关闭)。如果我的应用程序在显示 Outlook 消息后返回并死亡,我的事件处理程序也将死亡。

问题: 我应该如何在等待事件时让应用程序保持活动状态?

由于我的线程是创建邮件项并将其显示在 Outlook 窗口中的线程,我的线程是否负责不阻止可能的消息传递到 Outlook 窗口?

我的想法是有一个看起来像这样的方法来在等待时保持进程活着

while(!MailClosed){
   lock(mailLock){
      Monitor.Wait(mailLock);
   }
}
Run Code Online (Sandbox Code Playgroud)

然后让 send 和 close 的事件处理程序在处理完事件后调用另一个方法来唤醒服务员

private void SignalClose(){
   lock(mailLock){
      MailClosed = true;
      Monitor.Pulse(mailLock);
   }
}
Run Code Online (Sandbox Code Playgroud)

这样做会阻止可能的消息被传递到保存我的邮件项目的 Outlook 窗口吗?有没有人有更好的解决方案来处理这种情况?

c# events outlook wait

4
推荐指数
1
解决办法
2654
查看次数

Office 2010插件 - VSTO版本混乱

我正在努力创建Word 2010插件并创建一个Windows安装程序包来部署插件.插件的目标框架是.NET 3.5.

根据我从Microsoft阅读部署指南时的理解,.NET 3.5的VSTO运行时与Office 2010一起安装.
这是否意味着我可以假设只要在目标计算机上安装Word 2010,.NET 3.5的VSTO运行时还会出席吗?
http://msdn.microsoft.com/en-us/library/ff937654.aspx

另一个问题我担心我应该参考哪个版本的vsto.
通过上面的链接提供的部署示例代码引用了一个程序集,我假设(版本是9,而不是我期望的4)是针对.NET 3.5的VSTO 2010的一部分
Program Files\Reference Assemblies\Microsoft\VSTO\v9.0\ Microsoft.Office.Tools.v9.0.dll

但是当我在示例中检查安装程序的启动条件时,它会通过检查密钥中的版本字符串来搜索VSTO 2010 Runtime
HKLM\Software\Microsoft\VSTO Runtime Setup\V4R

HKLM\Software\Microsoft\VSTO Runtime Setup\V4

但是引用的程序集在文件夹路径中有v9.0,这让我觉得它们会匹配
HKLM\Software\Microsoft\VSTO Runtime Setup\V9.0.21022 or V9.0.30729

我是否仍然可以使用v4,即使我在参考我使用v9的程序集时,或者我在这里混合了什么?

.net vsto office-2010

2
推荐指数
1
解决办法
2888
查看次数

使用interop.word静默更新文档,而无需更改查看模式

我正在使用C#和Microsoft.Office.Interop.Word执行以下操作

  1. 开启文件
  2. 更新文件内容
  3. 保存并关闭文档

如果使用此方法打开文档(其中FileName是文件名,AddToRecentFiles为false且所有其他均为Missing.Value),则此方法可以正常工作

Document Open(
 [In] ref object FileName, 
 [In, Optional] ref object ConfirmConversions, 
 [In, Optional] ref object ReadOnly, 
 [In, Optional] ref object AddToRecentFiles, 
 [In, Optional] ref object PasswordDocument, 
 [In, Optional] ref object PasswordTemplate, 
 [In, Optional] ref object Revert, 
 [In, Optional] ref object WritePasswordDocument, 
 [In, Optional] ref object WritePasswordTemplate, 
 [In, Optional] ref object Format, 
 [In, Optional] ref object Encoding, 
 [In, Optional] ref object Visible, 
 [In, Optional] ref object OpenAndRepair, 
 [In, Optional] ref object DocumentDirection, 
 [In, Optional] ref object …
Run Code Online (Sandbox Code Playgroud)

c# interop ms-word

1
推荐指数
1
解决办法
5546
查看次数

标签 统计

c# ×2

.net ×1

events ×1

interop ×1

ms-word ×1

office-2010 ×1

outlook ×1

vsto ×1

wait ×1