这可能是一个非常普遍的问题 - 但我对 C# 很陌生。您能否向我解释一下,或者给我一个很好的示例或解释链接。
我想设计一个 C# Winform 应用程序。该应用程序有一个主窗体,它在需要时收集用户输入。与 UI 一起开发了一个复杂的长时间运行的计算算法。计算的开始是从主窗体上的按钮触发的。(CaculateClass.Start())
问题 1: 在 CaculateClass 的方法调用堆栈深处的某个时间点,CaculateClass 检测到它需要用户进一步输入才能继续计算。
在古老的 C++ 控制台应用程序时代,人们会做这样的事情: cout << "Ask question"; cin >> 回答;
这是如何在 C# 中使用 winforms 完成的,从调用堆栈深处的某处将控制权传递给 UI,获取输入并返回计算中断的地方?还是 CaculateClass 的设计方式完全不同?
问题 2 为避免 UI 冻结,许多文章建议将如此长时间运行的计算放入另一个线程 - 例如使用 BackgroundWorker()
如果我让 BackgroundWorker 计算 CaculateClass.Start() -> 那么收集用户输入如何工作?
感谢您的帮助,CS