我有一个程序可以在提供参数时读取图像,并通过Graphics对象将其呈现给屏幕。它都在一个线程上运行,因为我在主线程上有一个Console.Read()。
PFQuery *query = [PFQuery queryWithClassName:@"YourClass"];
[query whereKey:@"user" equalTo:[PFUser currentUser]];
[query getFirstObjectInBackgroundWithBlock:^(PFObject * yourClass, NSError *error) {
if (!error) {
// Found yourClass object
[yourClass setObject:isInStock forKey:@"isInStock"];
// Save
[yourClass saveInBackground];
} else {
// Did not find any yourClass object for the current user
NSLog(@"Error: %@", error);
}
}];
这是渲染循环:
gw.init();
Thread workerThread = new Thread(new ThreadStart(doRenderLoop));
workerThread.Start();
Console.Read();
running = false;
workerThread.Join();
这是gw.render:
try
{
while (running)
{
gw.render();
Thread.Sleep(1000 / 30);
}
}
catch (Exception)
{
throw;
}
}
(顺便说一句,bgColor是Color.BLACK)
从任务经理的说法来看,我的窗户很好。 当我看着我的窗户时,它不会聚焦并保持在无响应的状态。 picture
任何帮助都将不胜感激。
编辑1:我试过Eli的帖子,但仍然没有运气。这是新的渲染循环代码:
wg.Clear(bgColor);
wg.Flush();
我仍然得到相同的结果。并且代码的前3行不在主线程中。
编辑2:所以我让线程正常工作,一切正常显示。但似乎我仍然无法专注于窗口。此外,等待时间太短,所以它变得快速。
答案 0 :(得分:1)
什么类型的gw? 在任何情况下,Graphic对象都具有线程亲和力,这意味着您只能在初始化的线程中使用它们 将gw创建和初始化移动到工作线程,您的程序应该按预期工作(可能)。
但为什么要使用控制台呢?输入的文本字段会使此应用程序不需要多线程吗?
答案 1 :(得分:0)
Console.Read阻止调用线程,直到它收到输入。在控制台中按Enter键,它将移动。当我希望程序等到我连接调试器时,我经常把它放在main()的开头。
https://msdn.microsoft.com/en-us/library/system.console.read%28v=vs.110%29.aspx