我正在使用wpf应用程序,该应用程序具有许多UI屏幕可用,并且每个UI包含使用多线程,等待任务,调度程序和后台工作程序的大量处理。因此,现在我有两个按钮“开始”和“停止”。现在,当我单击开始按钮时,整个应用程序的进程(长时间运行的进程)需要在while循环中运行。从而导致应用程序冻结。所以现在我想在另一个普通应用程序的另一个类中转移我的过程。它只包含逻辑,我只需要向该应用程序发送单个参数。
现在,我想实现的效果是,当我从WPF应用程序中单击开始按钮时,然后需要在while循环中运行另一个应用程序(仅包含cs文件,将没有任何类型的UI)。再一次,当我单击“停止”按钮时,该应用程序又需要停止它的工作。我不知道如何实现它的逻辑,但是我有一个我所描述的想法。因此,请您能指导我如何实现该目标?
我可以为您推荐班级的抽象设计。当单击开始按钮时,在视图模型的命令处理程序中或后面的代码中,您可以触发任务并在类内释放长时间运行的代码。
例如:
您的命令处理程序。 LongRunningLogic是您的长期运行代码应放在的类的地方。
LongRunningLogic _longRunningLogic = new LongRunningLogic();
Task LongRunningTask = Task.Factory.StartNew(() =>
{
_longRunningLogic.LongRunningTask();
});
执行长时间运行操作的实际方法:
class LongRunningLogic
{
public void LongRunningTask()
{
while (true)
{
//Long running code
}
}
}