2017-12-14 9 views
0

wxWizardを使用しています。バックエンドから関数を呼び出す必要があります。応答が送信されるまでに時間がかかり、 。その応答がバックエンド関数から受け取られると、アプリは正常に動作します。なぜこれが起こっているのですか?私は何か間違っているのですか?そのアプリをハングしないようにするにはどうすればよいですか?ネットワークの問題やバックエンドでの処理時間が長いため、バックエンド機能からの応答が遅れる。バックエンドからの応答が長時間かかると、wxWidgetアプリケーションがハングアップする

答えて

0

this answerを参照してください。以下は抽出物です。

アプリケーションは、Windowsが提供するキューからイベントを取得します。

たとえば、長い計算を行うときなど、アプリケーションが(5秒間)イベントキューをポーリングしない場合、Windowsはアプリケーションがハングしてユーザーに警告するとみなします。

アプリケーションが高価な計算をワーカースレッドにプッシュアップするか、処理を分割してキューが定期的にポーリングされるようにする必要があります。

だから、あなたのコードの問題は、あなたのプログラムでは一つのスレッドのみ、メインスレッドがある、ということです。すべての活動を世話しています。 UI更新、イベント処理、ユーザー応答など(これは時間がかかりません)。しかし、使用するときは、のバックエンドサーバとの接続には、の時間がかかりますです。したがって、ネットワーク操作を処理する別のスレッドを使用する必要があります。このようにして、メインスレッドは正常に動作し、応答していないことを示しません。

関連する問題