問題タブ [formclosing]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1588 参照

c# - ワーカー スレッドで Invoke メソッドを使用している場合、Thread.Join は FormClosing イベントで返されません。

マルチスレッドを使用してアプリケーションを作成しています。アプリケーションには、基本的に UI と、バックグラウンドで何らかの作業を行い、UI を更新するスレッドがあります。フォームを閉じると、フォームクローズ イベントで、ワーカー スレッドに停止を通知します。ただし、何らかの理由でブロックされ、何がブロックされたのかわかりません。以下は私の問題の簡略化されたコードです。実際のコードはもっと複雑です。

問題は、私が使用する場合です

ボタン イベントでワーカー スレッドを停止するには、ワーカー スレッドは停止しますが、フォームを閉じるイベントでは停止しません。どんな助けでも大歓迎です。ありがとう。

0 投票する
2 に答える
1309 参照

c# - アクティブなフォームを閉じた後、別のフォームでイベント ハンドラーを呼び出す

アクティブなフォームを閉じた後にフォームで実行する特定の関数または関数が必要な C# アプリケーションがあります。

コードを実行する必要があるフォームは、前のアクティブなフォームが閉じられた後にアクティブなフォームになります。つまり、このフォームを閉じると、実行するイベント ハンドラーまたは関数が必要なフォームがアクティブなフォームになります。これが可能な方法はありますか?

他のフォームが閉じられた後にアクティブになるフォームで Form_Enter イベント ハンドラーを試しましたが、うまくいきませんでした。

0 投票する
1 に答える
52 参照

.net - どのような状況で関数の定義を実装ファイルだけに書くべきですか?

私はform1とform2を持っています。form2 を開くには、ボタン btn をクリックする必要があります。ポインター f2 を使用して form2 へのポインターを指定し、show(this) を使用してそれを開き、パブリック関数 DialogClosed を使用して f2 が nullptr を指すようにします。

Form1.hi には次のものがあります。

Form2.hi には次のものがあります。

Form2.cpp には次のものがあります。

私の質問:なぜ定義 Form2_FormClosed をヘッダー ファイルではなく実装ファイルに記述する必要があるのですか。ヘッダーファイルに定義を書き込もうとしましたが、うまくいきませんでした。あなたの助けが必要です、あなたの意見を教えてください。

0 投票する
1 に答える
5491 参照

c# - フォームを閉じないでください

Windows フォームでユーザーが x ボタンをクリックしたイベントをキャンセルできることはわかっていますが、タスク マネージャーがそれを閉じることができないようにしたいと考えています。私はこれをウェブ上で見つけていませんが、それを行う方法があると確信しています。

0 投票する
1 に答える
1293 参照

vb.net - Me.IsHandleCreated は、フォームが閉じられたかどうかを判断するための信頼できるインジケーターですか?

そうであることがわかりましたが、このプロパティの内部の仕組みを確実に知ることはできません。ユーザーがフォームを閉じると、このプロパティは確実に False を返すようです。

バックグラウンド ワーカーを実行しているときにこれを使用し、さらに処理を行う前に完了イベントでこのプロパティをチェックします。

0 投票する
2 に答える
1446 参照

c# - ユーザーがフォームの「X」ボタンをクリックしたときに実行中のスレッドを終了する

mainFrm という名前の単一のフォームと、実行中のスレッドを保持する objectA というオブジェクトがあるとします。これら 2 つのいずれかが発生すると、私のプログラムは終了するはずです。

(1)。ユーザーが mainFrm の「X」ボタンをクリックします (つまり、mainFrm.FormClosing が発生します)

(2)。objectA でイベント (「connectionClosed」と名付けましょう) が発生します。

したがって、(1)または(2)がトリガーされたとしても、この一連のイベントには常に次のものが含まれている必要があります。

  1. objectA の基になるスレッドの終了。(objectA内にあるコードでそれらを適切に終了する方法はすでに知っています)
  2. もちろん、mainFrmのクローズ

この問題を解決する最善の方法は何ですか?

これが私が解決した方法です

この質問がコミュニティに受け入れられなかった理由がわかりません。私はそれがかなり明確で簡単だと思いました。これが私がそれを解決した方法です。これが、私が意図したことをよりよく定義するのにも役立つことを願っています。他に質問がある場合は、お知らせください =)

フォーム クラス:

objectA のクラス:

最初に述べた(1)と(2)のユースケースによると、これが起こっているはずです(私が間違っていなければ)

(1)。ユーザーが「X」ボタンをクリック -> フォームが閉じられる -> formclosed が発生する -> objectA.kill メソッドデリゲートが実行される -> 内部スレッドがいくつかの connectionClosed イベントを発生させ、これにより objectA.kill の実行がさらにトリガーされますが、これはダメージを与えません。 volatile bool _connectionClosed (もちろん、とにかく動作する try/catch があるためですが、そのようなコードを再度実行しない方が理にかなっています) -> objectA.kill の完全な実行のみによってスレッドが終了します -> SUCCESS

(2)。サーバーが接続またはネットワーク エラーを閉じます -> objectA の内部スレッドが接続エラーを検出し、いくつかの connectionClosed イベントを発生させます -> 異なるスレッドが objectA.kill メソッド デリゲートを実行しようとします。-> 一方、メイン フォームでは、closeForm が実行され、フォームが閉じられます -> これにより、別の objectA.kill の実行もトリガーされます (this.FormClosed += _client.killClient; のおかげで) -> 繰り返しますが、_connectionClosed であるため、これは問題ありません。 volatile bool は、1 つのスレッドのみが実際にコードを実行できるようにします (最初にイベントを発生させたスレッド) -> スレッドは、objectA.kill の完全な実行のみによって正常に終了します -> SUCCESS

次のステップは、connectionClosed が 1 回だけ上昇するように、より便利な方法を見つけることです。今すぐググってみます =)

0 投票する
3 に答える
734 参照

vb.net - FormClosing で変更されたコンポーネントの値を保存する

私のアプリケーションには、いくつかのタブを持つ TabControl があります。各タブには多くのコンポーネントが含まれています。アプリケーションが閉じている場合、コンポーネントの値が変更されたかどうかを確認したいと思います。その場合、ユーザーに保存するかどうかを尋ねます。

この状況をどのように解決するか知りたいです (アプリケーションが閉じているときの標準的な動作であるため)。いくつかのフラグ (bool) があると思い、各コンポーネントにイベント ValueChanged を設定しました。このイベントを処理するメソッドが起動されると、このフラグは true に設定されます。アプリケーションを閉じる場合、フラグが true かどうかのみを確認します。

しかし問題は、30 以上のコンポーネントがあり、各コンポーネントにイベントを処理するメソッドを作成することです。