Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Outlook互操作提供了不同的结果_C#_Interop_Outlook - Fatal编程技术网

C# Outlook互操作提供了不同的结果

C# Outlook互操作提供了不同的结果,c#,interop,outlook,C#,Interop,Outlook,我正在使用Outlook Interop读取来自不同日历的一些事件,并将它们显示在大屏幕上。在我的机器上一切正常(Outlook 2010,Win7 x64),但在客户端的pc上(Outlook2003,Win XP),程序无法找到所有约会。如果我添加一些用于调试的复选框,该工具将在8到12个约会之间找到(应该找到12个约会),而不总是6个约会。我不知道出了什么问题,所以请帮帮我 代码如下: this.Appointments = new List<AppointmentItem>(

我正在使用Outlook Interop读取来自不同日历的一些事件,并将它们显示在大屏幕上。在我的机器上一切正常(Outlook 2010,Win7 x64),但在客户端的pc上(Outlook2003,Win XP),程序无法找到所有约会。如果我添加一些用于调试的复选框,该工具将在8到12个约会之间找到(应该找到12个约会),而不总是6个约会。我不知道出了什么问题,所以请帮帮我

代码如下:

this.Appointments = new List<AppointmentItem>();

foreach (MAPIFolder folder in this.SelectedCalendars)
{
    foreach (object app in folder.Items)
    {
        if (app is AppointmentItem && ((AppointmentItem)app).Start.Date == DateTime.Now.Date)
        {
            this.Appointments.Add(((AppointmentItem)app));
        }
    }
}

this.Appointments.Sort(
    delegate(AppointmentItem App1, AppointmentItem App2)
    {
        return App1.Start.CompareTo(App2.Start);
    });
this.appoinces=newlist();
foreach(此.SelectedCalendars中的MAPIFolder文件夹)
{
foreach(文件夹.Items中的对象应用程序)
{
如果(app是AppointmentItem&((AppointmentItem)app).Start.Date==DateTime.Now.Date)
{
此.appoints.Add(((AppointmentItem)app));
}
}
}
这个。约会。排序(
代表(任命项目App1、任命项目App2)
{
返回App1.Start.CompareTo(App2.Start);
});
更新

我有一些新消息。我得到了这个例外。你知道怎么处理吗

(我把德语翻译成英语;希望你能理解;)

无法创建类型为“System.\u ComObject”的COM对象 已更改为Interfacetype “Microsoft.Office.Interop.AppointmentItem。 无法运行此过程,因为对 用于与IID接口的COM组件 “{00063033-0000-0000-C000-0000000000 46}” 由于以下错误,无法运行: 不支持接口(异常_HRESULT:0x80004002(E_NOINTERFACE))


它可能是COM对象的迭代器失败

如果重新编写循环以显式地调用
GetFirst()
GetNext()
,是否有效:

object app = folder.Items.GetFirst();
while (app != null)
{
    if (app is AppointmentItem && ((AppointmentItem)app).Start.Date == DateTime.Now.Date)
    {
        this.Appointments.Add(((AppointmentItem)app));
    }
    app = folder.Items.GetNext();
}
您还可以尝试在开始日期筛选Items集合

var items = folder.Items.Restrict("[Start] < '01/31/2009 00:00 AM' and [Start] >= '01/30/2009 00:00 AM");
var items=folder.items.Restrict(“[Start]<'01/31/2009 00:00 AM'和[Start]>='01/30/2009 00:00 AM”);

请确保您已绑定到2003版的Office Interop,该版本应是向前兼容的。

Hm,sry,但这无法解决问题。我开始认为Outlook/Exchange可能有问题…folder.Items.Count在2003年和2010年是否给出了相同的数字?每次更新的数字都不同。同样的Interop也是如此。所以很难做出比较这是一个疯狂的想法。可能是日期过滤器失败了吗?((任命项目)应用程序).Start.Date==DateTime.Now.Date可能检索到一个没有时区信息的约会,因此比较失败?如果检索到一个月内的所有约会,那么您是否得到了正确的数字?已经检查过了。只是为了好玩,我还尝试了v14,得到了相同的结果(仅供参考)