[解決済み] Dispatcher.BeginInvoke。ラムダをSystem.Delegateに変換できない
2023-06-27 11:05:27
質問
私は
System.Windows.Threading.Dispatcher.BeginInvoke
. メソッドのシグネチャはこうなっています。
BeginInvoke(Delegate method, params object[] args)
Delegateを作る必要がなく、Lambdaで渡そうとしています。
_dispatcher.BeginInvoke((sender) => { DoSomething(); }, new object[] { this } );
というコンパイラーエラーが出ます。
はラムダをSystem.Delegateに変換できません。
デリゲートのシグネチャは、オブジェクトをパラメータとして受け取り、voidを返します。私のラムダはこれに一致しますが、まだ動作していません。何が足りないのでしょうか?
どのように解決するのですか?
このメソッドは システム.デリゲート を取るので、そのように宣言された特定のタイプのデリゲートを与える必要があります。 これは、以下のようにキャストするか、new DelegateTypeで指定されたデリゲートを作成することで実現できます。
_dispatcher.BeginInvoke(
new Action<MyClass>((sender) => { DoSomething(); }),
new object[] { this }
);
また SLaks が指摘しているように ディスパッチャ.BeginInvoke は params 配列を取るので、そのまま書けばいいのです。
_dispatcher.BeginInvoke(
new Action<MyClass>((sender) => { DoSomething(); }),
this
);
あるいは、DoSomethingがこのオブジェクト自体のメソッドである場合。
_dispatcher.BeginInvoke(new Action(this.DoSomething));
関連
-
[解決済み】指定されたキャストが有効でない?
-
[解決済み】値をNULLにすることはできません。パラメータ名:source
-
[解決済み] ...基礎となる接続は閉じられました。予期しないエラーが受信で発生しました
-
[解決済み] リスト内包とラムダ+フィルタの比較
-
[解決済み] クロージャ」と「ラムダ」の違いは何ですか?
-
[解決済み] Distinct() with lambda?
-
[解決済み] ラムダ(関数)とは何ですか?
-
[解決済み] ラムダ式からプロパティ名を取得する
-
[解決済み】C++11のラムダ式って何?
-
[解決済み] object-lifetime-extending-closure はC#コンパイラのバグか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】スクリプトクラスが見つからないので、スクリプトコンポーネントを追加できない?
-
[解決済み】Excel "外部テーブルが期待された形式ではありません。"
-
[解決済み】非静的メソッドはターゲットを必要とする
-
[解決済み】クロススレッド操作が有効でない。作成されたスレッド以外のスレッドからアクセスされたコントロール
-
[解決済み】リソースの読み込みに失敗した:ステータス500(内部サーバーエラー)のサーバーの応答)
-
[解決済み】Socket.Selectがエラー "An operation was attempted on something that is not a socket" を返す。
-
[解決済み】MetadataException: 指定されたメタデータ・リソースをロードできない
-
[解決済み】OnCollisionEnter2Dが実行されない?
-
[解決済み] ...基礎となる接続は閉じられました。予期しないエラーが受信で発生しました
-
[解決済み】Nullableオブジェクトは値を持たなければならない?