代码之家  ›  专栏  ›  技术社区  ›  moogs

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

  •  0
  • moogs  · 技术社区  · 17 年前

    *3.0.30618(最新的.NET 3.0版本)

    它在RTM版本中不起作用。我们将问题追溯到调用system.windows.threading.dispatcher.BeginInvoke。该代理已通过,但从未运行。

    3 回复  |  直到 17 年前
        1
  •  1
  •   Jon Skeet    17 年前

    我强烈地 这是代码中的一个bug,即使它 是 原始.NET3.0与更高版本之间的差异。

        2
  •  1
  •   moogs    17 年前

    发现了问题。

    对于.NET 3.0(3.0.04506),BeginInvoke具有以下重载:

    1. 代表);
    2. 代表、对象);
    3. 调度员。开始呼叫(调度员优先,

    对于3.0 SP2(3.0.30618),添加了以下内容。

    1. Dispatcher.BeginInvoke(委托,对象[]); <---我们用的是这个
    2. Dispatcher.BeginInvoke(委托、DispatcherPriority、对象[]);

    当在带有.NET RTM版本的机器上运行时,由于该方法还不存在, 将引发MissingMethod异常,因此从未执行该委托。

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

    现在,这真的很糟糕。没有人可以使用新的超载和晚上睡觉。 现在来寻找异常被静默处理的原因。。。

    谢谢大家!

        3
  •  0
  •   Matthew Scharley    17 年前

    RTM是该框架的早期版本。这意味着它不是完全稳定的,而且极有可能这是一个bug。考虑到.NET3.0在发行版中已经存在了多长时间,我对解决这个“问题”的建议是非常简单地更新.NET。

    忽略这一点,但我会留下答案,这样评论就可以保留下来。