【问题标题】:How to attach SynchronizationContext of Non-UI thread如何附加非 UI 线程的 SynchronizationContext
【发布时间】:2011-08-02 21:26:55
【问题描述】:

我正在进行单元测试,我必须将一个线程的上下文传递给另一个线程。在现实生活中,第一个是 UI 线程,一切都会好起来的(我希望)。但是我的单元测试没有 UI(它是一些测试线程)。 我已阅读:“One thread that always has a SynchronizationContext is the UI thread.” 是否可以将一个线程(非 UI)的上下文附加到另一个线程?该怎么做?

【问题讨论】:

    标签: c# multithreading .net-3.5 synchronization


    【解决方案1】:

    我认为您可能需要重新考虑您的测试策略。

    如果你真的想测试 GUI 和一些后台任务线程安全之间的交互,你可以创建简单的 WinForm 并尝试一下。

    或者尝试创建测试,以便在您从后台线程获得一些结果(即正确显示它)后,您的 GUI 表单的行为符合预期。

    为 GUI 创建单元测试非常棘手。这就是为什么人们倾向于删除 GUI 之外的所有业务和任何其他逻辑,以便它可以轻松测试。

    也许您可以考虑将 WPF 与 MVVM 一起使用,或者将 WinForms 与 MVP 一起使用,这样更容易绘制这条线

    【讨论】:

    • 你说得对,我从来没有在 UI + 多线程中使用过业务逻辑。我完全理解如何做到这一点,但我有一个大而丰富的 UI 和逻辑,我没有太多时间重新设计它。所以我正在寻找一个“小血”的解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-24
    • 1970-01-01
    • 2011-05-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多