.NET的发行说明/历史记录? BeginInvoke问题

时间:2009-08-19 11:07:03

标签: .net wpf

我们有一些代码在两个.NET版本中表现不同:   * 3.0.30618(最新的.NET 3.0版本)   * 3.0.04506(.NET 3.0 RTM)

它在RTM版本中不起作用。我们将问题跟踪到对system.windows.threading.dispatcher.BeginInvoke的调用。通过的代表从未跑过。

解决此问题的任何提示或建议?

3 个答案:

答案 0 :(得分:1)

我强烈怀疑这是代码中某处的错误,即使 是原始.NET 3.0与更高版本之间的差异。

我建议你像其他任何问题一样处理它:将代码减少到最低限度以显示问题。那么它应该是相对清楚的,它是一个框架错误还是你自己的代码中的错误。

答案 1 :(得分:1)

发现问题。

使用.NET 3.0(3.0.04506),BeginInvoke有以下重载:

  1. Dispatcher.BeginInvoke(的DispatcherPriority, 代表);
  2. Dispatcher.BeginInvoke(的DispatcherPriority, Delegate,Object);
  3. Dispatcher.BeginInvoke(的DispatcherPriority, 委托,对象,对象[]);
  4. 使用3.0 SP2(3.0.30618)时,添加了以下内容。

    1. Dispatcher.BeginInvoke(Delegate,Object []); < ---我们正在使用这个
    2. Dispatcher.BeginInvoke(Delegate,DispatcherPriority,Object []);
    3. 在使用RTM版本的.NET的计算机上运行时,由于该方法尚未存在, 抛出了一个MissingMethod异常,因此从未执行过委托。

      现在解决方案是使用“旧”重载:Dispatcher.BeginInvoke(DispatcherPriority, Delegate);

      现在,这真的很糟糕。没有人能够使用新的重载并在晚上睡觉。 现在来寻找为什么异常被无声地处理......

      谢谢大家!

答案 2 :(得分:0)

RTM是框架的早期版本。这意味着它并不完全稳定,并且这很可能是一个错误。考虑到.NET 3.0在发布形式中存在多长时间,我对解决这个“问题”的建议很简单就是更新.NET。

忽略这一点,但我会留下答案本身,以便评论存活下来。