在线程中启动GameWindow

时间:2015-09-17 16:57:52

标签: c# .net opentk

我正在尝试编写一个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方法在一个线程中发生,因为它阻塞了窗口的生命周期。

1 个答案:

答案 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;
        }
    }
}