首页 > 解决方案 > 只要函数 B 在 C# (控制台应用程序)中执行,如何运行函数 A

问题描述

编辑:根据评论中的建议,我将列出 A 和 B 的实际功能以及我想要实现的目标。

我正在尝试在 C# 控制台应用程序中创建加载动画。函数 A 重复(因此为什么为真)在屏幕上绘制字符(动画),而函数 B 在后台执行一些代码。

因此,一旦功能 B 完成,我需要功能 A 停止,因为那是程序“加载”的时候。

我有两个功能。

public static void A(){
    while(true){//repeatedly do one thing}
}

public static void B(){
        //do something
        //do something
        //do something
    }
static void Main(string[] args) {//main func}

基本上,只要 B 正在运行,我就想执行 A(因为它是一个 while 循环)。一旦 B 完成执行其代码,A 将停止执行。

我已经尝试过 Parallel.Invoke 但问题是 Parallel.Invoke 等待将等待两个函数在它停止之前完成执行。由于函数 A 是一个永无止境的循环,Parallel.Invoke 也永远不会结束。

提前感谢任何建议。

标签: c#functionconsole-applicationsimultaneous

解决方案


上述答复表示赞赏。但是,我认为我找到了一种更简单的方法,至少对于我正在尝试做的事情。我将把它留在这里以备将来参考,以防有人尝试这样做。

我通过多线程解决了这个问题。我将函数 A 作为子线程启动,然后在主线程中执行函数 B。函数 B 完成后,我终止了包含函数 A 的子线程。代码如下所示:

ThreadStart funcA = new ThreadStart(functionA);
Thread funcAThread = new Thread(funcA);
funcAThread.Start();
functionB();
funcAThread.Stop();

这可能不适用于每种情况,但如果您只想在代码在后台执行时打印一些加载动画,这是(据我所知),最简单的方法,代码行数最少。


推荐阅读