我正在C#上进行游戏,只是为了练习和学习(C#中的第一个程序),我想知道C#是否有可能让我,而我的程序(游戏)正在运行同时运行另一段代码这将是背景音乐(只是一些Console.Beep()基本的东西)。
简而言之,我的问题是,背景音乐的代码和游戏的代码是否可能在同一个程序中,如果没有,是否有一种简单的方法可以在一个控制台。
答案 0 :(得分:1)
线程有很多选择。其中一个最简单的就是使用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”方法将在separte线程上运行。
“令牌”用于取消任务。 “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元素的问题,但这是一个良好的开端:)