C#-处理多种方法及其完成的最佳方式

C#-处理多种方法及其完成的最佳方式,c#,.net,C#,.net,我有一个应用程序,它有几种方法可以检查计算机上的各种错误。现在我正在调用表单的加载事件方法,但我有点想通过更新标签文本来显示程序正在做什么,比如progressbar。它应该按顺序从一种方法转到另一种方法 然后我还想检查一下是否一切都顺利进行。我应该为此研究线程任务吗?就像为每个方法启动任务一样,如果任务失败则停止任务?我建议创建以下类: WorkstationCheckBase-应为所有检查的基类 WorkstationCheckRunner-获取所有检查和汇总的列表 每个工作站检查库的结果

我有一个应用程序,它有几种方法可以检查计算机上的各种错误。现在我正在调用表单的加载事件方法,但我有点想通过更新标签文本来显示程序正在做什么,比如progressbar。它应该按顺序从一种方法转到另一种方法


然后我还想检查一下是否一切都顺利进行。我应该为此研究线程任务吗?就像为每个方法启动任务一样,如果任务失败则停止任务?

我建议创建以下类:

  • WorkstationCheckBase
    -应为所有检查的基类
  • WorkstationCheckRunner
    -获取所有检查和汇总的列表 每个
    工作站检查库的结果
这样,您将封装UI中的检查并分离这些概念


现在,第二个问题将在UI上显示一些信息(我的假设是您使用WinForm)。为此,您需要一个后台任务,并经常更新UI。您可以使用
Backgroundworker
类来实现这一点

简短回答:不,不要使用线程-

长答案:视情况而定! 当您开始使用线程时,您将开始面临大量其他与并发相关的问题,如果您只想显示正在发生的事情的标签,我不建议您使用线程

因为我没有代码可以看,所以我只能给你建议如何解决你的问题(没有线程)。最简单的方法是:

    public void CheckErrors()
    {
        string errorText = string.Empty;
        if (ErrorOneHasOccured(out errorText))
        {
            ErrorLabel += errorText;
        }

        errorText = string.Empty;
        if (ErrorTwoHasOccured(out errorText))
        {
            ErrorLabel += errorText;
        }
    }

    private bool ErrorOneHasOccured(out string errorText)
    {
        bool errorHasOccured = false;
        errorText = string.Empty;

        // DO error checking somehting

        if (errorHasOccured)
        {
            errorText = "An error description";
            return true;
        }

        return false;
    }
其中:

  • ErrorLabel是要显示的错误文本的字符串属性
  • ErrorOneHasOccursed是使用“Try”模式进行错误检查的示例方法

我认为这是最简单的方法,但很明显,您可以根据需要什么以及为什么需要它来进一步设计它。

为什么不试试呢?每件事都有优点和缺点,试试看会发生什么事。你使用的是什么版本的.Net?async/await可能会有帮助。我不认为这篇文章太宽泛,我的2美分。