C# と gtk# で GUI アプリケーションを構築しています。最近問題が発生し、この問題に対する最善の解決策を探していました。
ユーザーが数値を入力するためにポップアップするモーダルウィンドウがあります。このウィンドウは、メイン ウィンドウからアクセスする別のウィンドウであり、次のように設定されています。
public class MainWindow()
{
public NumberEntry numEntry;
ユーザーからの数値入力が必要なときはいつでも、次のように NumberEntry の public Window プロパティで ShowAll() を呼び出します。
numEntry.win.ShowAll();
そして、これはすべて正常に機能します。その後、入力した値を取得するために、次のように呼び出します。
int entered = numEntry.valueEntered;
問題は明らかに、ShowAll() 行が終了した直後にコードが実行され続け、numEntry.valueEntered が常に 0 であることです。 2 番目のスレッドで数値入力ウィンドウを開き、これが完了したらメイン スレッドに戻ります。メイン スレッドを一時停止すると、数値入力ウィンドウを開こうとしたときに GUI の変更によってプログラムがフリーズするのを防ぐようです。また、しばらくするとかなり複雑になるので、可能な限りコールバック メソッドを避けたいと思います。何かアドバイス?ありがとう!