2017-10-22 2 views
0

データグリッドを表示するメインフォームと、行の1つをダブルクリックした後に表示される「詳細フォーム」(ShowDialogメソッドを使用)を持つWindowsフォームアプリケーションがあります。この「詳細フォーム」は正確に私にいくつかの問題を与えています。Application.Exit()を呼び出した後、ダイアログフォームがアプリケーションをハングアップするのはなぜですか?

  1. 「応答していません」という状態の長いWebサービスシステムセットのフォームでは、コールバックフォームがメインウィンドウの後ろに隠れた後。それ以外はすべて正常に動作します。

  2. 状況によっては、すぐにApplication.Exitを使用してアプリケーションを閉じる必要があります。 「詳細フォーム」が開いているときは、アプリケーションがハングアップします。 Environment.ExitまたはThread.CurrentThread.Abortでも機能しません。

これらの症状に基づいていれば、私に何かヒントを与えることができますか、何が間違っているのだろうかと思います。私はいくつかのコード例を挙げていますが、この場合は何が重要なのか分かりません。

答えて

-1

すぐにアプリケーションを閉じるとプロジェクトの要件の一部である場合、長い同期呼び出しで中断/終了コードをブロックすることはできません。長い同期呼び出しをバックグラウンドスレッドに移動します。

+0

私はそれが十分にそれを明確に記述していないことがわかります。ポイント1.と2.は、少なくとも直接には接続されていません。 – kar8o

+0

は、中止/終了コード(ポイントA)でブレークポイントを設定し、Webサービスコールの直後(ポイントB)でデバッグを設定します。ポイントBを通過するまでポイントAを押すことはできませんが、ポイントBより前にポイントAを押すことが必要なので、同期コールを非同期に変更する必要があります。 –

+0

私は、アプリケーションがハングアップするためにWebサービスを呼び出す必要はないことを意味します。 「詳細フォーム」は開いていれば十分です。サービスコールバック後のこのような特殊な動作は、同じ実装ミスの別の症状かもしれないと私は思っていました。 – kar8o

関連する問題