我正在尝试编写一个OpenTK应用程序,您可以在控制台窗口中键入命令,并让GameWindow显示命令的结果。
我的代码如下所示:
public Program : GameWindow
{
static void Main(string[] args)
{
var display = new Program();
var task = new Task(() => display.Run());
task.Start();
while (true)
{
Console.Write("> ");
var response = Console.ReadLine();
//communicate with the display object asynchronously
}
}
}
但是,在任务或线程中启动时不会显示显示窗口。
为什么会这样?我需要Run方法在一个线程中发生,因为它阻塞了窗口的生命周期。
答案 0 :(得分:1)
要解决您的特定问题,只需在线程本身上创建窗口实例(在您的情况下为“display”):
public class Program : GameWindow {
private static void Main(string[] args) {
Program display = null;
var task = new Thread(() => {
display = new Program();
display.Run();
});
task.Start();
while (display == null)
Thread.Yield(); // wait a bit for another thread to init variable if necessary
while (true)
{
Console.Write("> ");
var response = Console.ReadLine();
//communicate with the display object asynchronously
display.Title = response;
}
}
}