在主程序运行时运行一段代码

本文关键字:一段 代码 主程序 运行时 运行 | 更新日期: 2023-09-27 18:01:19

我正在用c#制作一款游戏,只是为了练习和学习(第一个c#程序),我想知道c#是否可以让我在我的程序(游戏)运行的同时运行另一段作为背景音乐的代码(只是一些Console.Beep()基本的东西)。

简而言之,我的问题是是否有可能将背景音乐代码和游戏代码放在同一个程序中,如果不可能,是否有一种简单的方法可以在一个主机上实现。

在主程序运行时运行一段代码

线程有很多选项。最简单的方法之一就是使用Task()

// Here I store the token for future use
processMe = new MyBackgroundProcess(ERPManager.CancellationTS.Token);
var aTask = new Task(() =>
{ // Everything here runs on another thread
  processMe.Run();
}, ERPManager.CancellationTS.Token);

在这种情况下,"Run"方法将在一个单独的线程上运行。

"令牌"用于取消任务。"processMe"存储引用并询问"我被取消了?"

例如,Run()就像

public void Run()
{
  while (! token.IsCancellationRequested)
  {
    PlayMusicSlice();
  }
}

检查它是否被取消了。当你完成后,你只需要做一个

ERPManager.CancellationTS.Cancel()

在你的主线程。

你可以使用

List<Task> tasks = new List<Task> ();
tasks.Add(new Task(() => Process1.Run(), aCancellationToken));
tasks.Add(new Task(() => Process2.Run(), aCancellationToken));
tasks.Add(new Task(() => Process3.Run(), aCancellationToken));

然后做

Task.WaitAll(tasks.ToArray());

Task.WaitAny(tasks.ToArray());

然后查询状态

if (tasks[0].IsCompleted()) { ... }
if (tasks[0].IsFaulted()) { ... }

您将面临许多问题,如并发性和访问UI元素的问题,但这是一个良好的开始:)