問題タブ [delegates]

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 投票する
6 に答える
1566 参照

windows - Windows フォームのスレッド化とイベント - ListBox はすぐに更新されますが、プログレス バーには大きな遅延が発生します

私たちのチームは、古いものに代わる新しい採用ワークフロー システムを作成しています。私は、古いデータを新しいスキーマに移行する任務を負っています。スキーマが根本的に異なり、単純な TSQL スクリプトは適切なソリューションではないため、小規模な Windows フォーム プロジェクトを作成することでこれを行うことにしました。

作業を行うメインのシール クラス 'ImportController' は、次のデリゲート イベントを宣言します。

メイン ウィンドウは、新しいスレッドを使用してそのクラスの静的メソッドを開始します。

ImportProgressEvent 引数は、文字列メッセージ、進行状況バーの最大 int 値、および現在の進行状況 int 値を運びます。Windows フォームはイベントにサブスクライブします。

独自のデリゲートを使用して、この方法でイベントに応答します。

最後に、プログレス バーとリストボックスが更新されます。

問題は、ListBox が非常に迅速に更新されるように見えることですが、とにかくバッチがほぼ完了するまでプログレス バーは移動しませんか ??? 何が得られますか?

0 投票する
6 に答える
30074 参照

c# - 別のアプリケーションでイベントをリッスンする

C# で記述された 2 つのアプリケーションがあるとします。1 つ目は、「OnEmailSent」と呼ばれるイベントを発生させるサードパーティ アプリケーションです。

2つ目は、1つ目のアプリの「OnEmailSent」でもなんとか購読したいという思いで書いたカスタムアプリです。

「OnEmailSent」イベントをリッスンする最初のアプリケーションのインスタンスに 2 番目のアプリケーションをアタッチする方法はありますか?


さらに明確にするために、私の具体的なシナリオは、"OnEmailSent" イベントを発生させる c# で記述されたカスタム サード パーティ アプリケーションがあるというものです。リフレクターを使用してイベントが存在することを確認できます。

やりたいことは、このコンポーネントが電子メールを送信するときに他のアクションを実行することです。

私たちが考えることができる最も効率的な方法は、anders が提案したように、何らかの形式の IPC を使用して、サードパーティ コンポーネントによって発生する OnEmailSent イベントをリッスンできるようにすることです。

コンポーネントは C# で記述されているため、実行中のプロセスにアタッチできる別の C# アプリケーションを記述し、OnEmailSent イベントが発生したことを検出すると、独自のイベント処理コードを実行するというアイデアをいじっています。


私は何かが欠けているかもしれませんが、リモーティングがどのように機能するかについて私が理解していることから、クライアントがサブスクライブできるある種のコントラクトを定義するサーバーが必要になるということです。

たとえば、誰かが別のアプリケーションからサブスクライブしたいイベントを公開する Outlook のようなスタンドアロン アプリケーションを作成したシナリオについて考えていました。

私が考えているシナリオは、.net デバッガーと、実行中のアセンブリにアタッチして、実行中にコードを検査する方法だと思います。

0 投票する
6 に答える
3490 参照

c# - 「新規」がある場合とない場合の配線イベントの違い

C# では、これら 2 行のコードの違い (ある場合) は何ですか?

どちらもまったく同じように見えます。C# は、後者を入力するときに前者を意味すると想定しているだけですか?

0 投票する
11 に答える
142070 参照

c# - デリゲートとイベントの違いは何ですか?

デリゲートとイベントの違いは何ですか? どちらも実行可能な関数への参照を保持していませんか?

0 投票する
8 に答える
47393 参照

oop - デリゲートはどこで使用しますか?

代表者を必要とする現実世界の場所は何ですか?この方法が最善の解決策である場合、どのような状況やパターンが存在するのか興味があります。コードは必要ありません。

0 投票する
15 に答える
277022 参照

java - Java デリゲート?

C# がデリゲートをサポートするのと同様に、Java 言語にはデリゲート機能がありますか?

0 投票する
9 に答える
33489 参照

c# - C# 動的イベント サブスクリプション

C# イベントを動的にサブスクライブして、オブジェクト インスタンスとイベントの名前を含む文字列名を指定すると、そのイベントをサブスクライブして、そのイベントが発生したときに何か (たとえば、コンソールに書き込む) を行うにはどうすればよいでしょうか?

Reflection を使用すると、これは不可能なように思われます。可能であれば、Reflection.Emit を使用する必要がないようにしたいと思います。これが現在 (私にとって) それを行う唯一の方法のように思われるからです。

/EDIT:イベントに必要なデリゲートの署名がわかりません。これが問題の核心です

/編集 2:デリゲートの反変性は良い計画のように思えますが、このソリューションを使用するために必要な仮定を立てることはできません

0 投票する
4 に答える
33033 参照

c# - Predicate Delegate をインラインで宣言するにはどうすればよいですか?

だから私はいくつかのフィールドを持つオブジェクトを持っていますが、実際には何の問題もありません。これらのオブジェクトの一般的なリストがあります。

そのため、いくつかの基準に基づいてリストからオブジェクトを削除したいと考えています。たとえば、これを行うためにメソッドmyObject.X >= 10. を使用したいと思います。RemoveAll(Predicate<T> match)

RemoveAll に渡すことができるデリゲートを定義できることはわかっていますが、一度だけ使用される一連のデリゲート関数を作成する代わりに、これを匿名デリゲートでインラインで定義する方法を知りたいです。

0 投票する
4 に答える
24919 参照

c# - このデリゲートを匿名メソッドまたはラムダに変換します

私はすべての匿名機能に不慣れで、助けが必要です。私は次のように動作するようになりました:

しかし、これはまったく醜いので、Do の内部を匿名メソッドにするか、可能であればラムダにしたいと考えています。私は試した:

しかし、これらは私に与えます

デリゲート型ではないため、匿名メソッドを 'System.Delegate' 型に変換できません** コンパイル エラー。

私は何を間違っていますか?


Mark Ingram が投稿したことから、誰も明示的に言っていませんが、最善の答えのように思えますが、これを行うことです:

0 投票する
9 に答える
1154 参照

c# - このデリゲート呼び出しは、このコード行 (C#) で何をしていますか?

これは、agsXMPP .Net アセンブリに付随する例からのものです。私はデリゲートについて調べましたが、それがこのコード行 (ログオンが発生するのを待ってからメッセージを送信する) にどのように適合するかはわかりません。私が探しているのは、なぜdelegate(0)達成するのかを理解することだと思いますこれは、私が理解できるような簡単な言葉で。