我正在用 C# 和 gtk# 构建一个 GUI 应用程序。我最近遇到了一个问题,正在寻找解决这个问题的最佳方法:
我有一个弹出的模式窗口供用户输入数字。这个窗口是从我的主窗口访问的一个单独的窗口,它的设置如下:
public class MainWindow()
{
public NumberEntry numEntry;
每当我需要用户输入数字时,我都会在 NumberEntry 的公共 Window 属性上调用 ShowAll(),例如:
numEntry.win.ShowAll();
所有这一切都很好。之后,为了获得他们输入的值,我调用:
int entered = numEntry.valueEntered;
问题显然是代码在 ShowAll() 行完成后立即继续执行,并且 numEntry.valueEntered 始终为 0。我想做的(并且一直在尝试做的)是暂停主线程,并且在第二个线程中打开数字输入窗口,并在完成后加入主线程。当我尝试打开数字输入窗口时,暂停主线程似乎可以防止 GUI 更改导致程序冻结。如果可能的话,我还想避免使用回调方法,因为这会在一段时间后变得相当复杂。有什么建议吗?谢谢!