Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF-在无限循环中运行_C#_Wpf_Kinect_Kinect Sdk - Fatal编程技术网

C# WPF-在无限循环中运行

C# WPF-在无限循环中运行,c#,wpf,kinect,kinect-sdk,C#,Wpf,Kinect,Kinect Sdk,我正在尝试编程一个机器人手臂,我有一个C#项目,有许多不同的类作为控制台应用程序运行,允许机器人移动到不同的地方并执行某些任务。机器人没有视觉系统 关于这个问题: 我正在使用kinect传感器在WPF应用程序中提取颜色和深度数据(我正在学习kinect教程,它可以做到这一点),然后机器人将使用它移动到特定位置。唯一的问题是,如上所述,我有一个单独的控制台应用程序,它有一堆类和函数。在WPF应用程序中,当所有传感器信息就绪时触发事件。我想把我的整个控制台应用程序代码放在WPF项目的无限while循

我正在尝试编程一个机器人手臂,我有一个C#项目,有许多不同的类作为控制台应用程序运行,允许机器人移动到不同的地方并执行某些任务。机器人没有视觉系统

关于这个问题: 我正在使用kinect传感器在WPF应用程序中提取颜色和深度数据(我正在学习kinect教程,它可以做到这一点),然后机器人将使用它移动到特定位置。唯一的问题是,如上所述,我有一个单独的控制台应用程序,它有一堆类和函数。在WPF应用程序中,当所有传感器信息就绪时触发事件。我想把我的整个控制台应用程序代码放在WPF项目的无限while循环中,然后使用传感器信息让机器人移动到特定的位置

本质上,我要问的是,我在哪里可以将代码放入WPF应用程序的无限while循环


我想我可能完全误解了如何使用WPF应用程序,任何帮助都将不胜感激

我认为你误解了WPF的工作原理。WPF不应该是所有代码运行的结构,它应该是显示系统的层。也就是说,您应该将WPF放在控制台应用程序的顶部,而不是将您的控制台应用程序“插入”到WPF中,并期望WPF完成腿部工作

看看MVVM模式,看看我的意思

谷歌提供了一个快速的“MVVM简介”

作为参考,您现有的控制台代码将属于模型层

简而言之:

型号-您的系统,没有显示或使用系统的逻辑
ViewModel-一个中间人层,有效地定义用户如何与系统交互

视图-一个非常精简、特定于实现的UI版本。

MVVM是WPF的默认模式,您最好考虑使用这些原则来实现它

如果只想迁移代码,可以将其添加到主窗口控件的代码隐藏文件中。在WPF中,这被认为是不好的做法,但这是最快的方法

这更像winforms编程,因此您可以使用构造函数调用其他代码

但是,如果您正在查看无限循环,您可能希望将其封装在异步等待任务方法中,否则您的UI将冻结在同一线程上运行


希望帮助。

一旦您想在WPF中做任何事情,一旦循环开始,我认为您真正需要的是服务,您可能会考虑将控制台应用程序更改为库,并从WPF应用程序中使用该库。然后,您可以在一个专门的线程上运行它(可以循环)。我不得不说,我担心这个设计,但不知道实际的代码和责任,就不可能对任何细节提出建议。