我必须将我的数据库pkid保存到outlook。我用了UserProperties["TaskId"]
。我试图通过此ID找到该项目,以下代码无法正常工作
tasksFolder.Items.Find(string.Format("[TaskId] = '{0}'", id))
有没有找到我的项目而不是在我的所有列表上循环! 有什么更好的方法可以在outlook上保存Database id,EntryID是只读的。
答案 0 :(得分:1)
您可以利用在后台运行的AdvancedSearch
。
准确地说,您可以使用Application.AdvancedSearch
启动异步搜索任务(请参阅documentation here)
string scope
参数实际上是将执行搜索的Outlook文件夹。我想您可能会使用默认任务文件夹(请参阅olDefaultFolder)
在您的情况下,您必须使用CustomField创建查询。这是语法(未经测试)。这个奇怪的0x0000001f
实际上是CustomProperties
,see
"http://schemas.microsoft.com/mapi/string/{00020329-0000-0000-C000-000000000046}/TaskId/0x0000001f = 'yourid'"
请注意,使用AdvancedSearch
,您可以在后台执行搜索任务,而不会冻结UI线程。我建议您使用ID来识别您的搜索,这样您就不会陷入并发搜索或取消。