在线程内更新UI上的标签

时间:2013-03-12 01:44:28

标签: c#

从线程内更新UI的传统方法是什么?

例如,我在类中有一个处理用户登录的方法。在这个方法中,我想在UI(主线程)上以标签的形式在登录过程的各个阶段向用户提供反馈。

public void userLogin(User _user)
{
    // 1. Navigate to site.com
    // 2. Update label on UI
    // 3. Attempt login
    // 4. Update label on UI
    // 5. Check login status
    // 6. Update label on UI
}

我不想包含代码来更新方法中的UI,因为类本身用于其他项目,以及其他团队成员用于不同的项目。在某些项目中,我可能会决定将其保存到日志文件中进行调试,而不是更新UI上的标签。我不想创造任何形式的耦合。

什么是最好的解决方案?活动是否可行?

顺便说一下。我使用的是.NET 4.5和C#5。

2 个答案:

答案 0 :(得分:2)

我会说在observer pattern之后使用活动将是您最好的选择。这就是它们的设计用途。

  

观察者模式是一个软件设计模式,其中一个对象,   称为主题,维护其受抚养人名单,称为   观察者,并自动通知他们任何状态变化,   通常通过调用他们的方法之一。

答案 1 :(得分:0)

在Windows窗体中,您可以使用BackgroundWorker类。