[ad_1]
やあ、
私の問題は、カスタム オブジェクトを OutputDataReceived メソッドに送信できないことです。 詳細:
URL、タイトル、説明などのプロパティを含む Material というクラスがあります。
次に、プロセスを開始します。 私の目標は、URL を使用してタイトルを取得することです。 つまり:
(疑似コード)
C#
Material m=new Material(URL); Process proc=new Process(); proc.startInfo.FileName = youtube_dl; proc.startInfo.Arguments="--get-title "+m.URL; // get title using url proc.OutputDataReceived += OutputDataReceived; proc.Start();
これまでのところ、すべて問題ありません。 e.Data を使用してデータを取得できます
void OutputDataReceived(object sender, DataReceivedEventArgs e) メソッド。
問題は、Material オブジェクトにこのデータを次のように入力したいということです:
C#
m.Title=e.Data;
しかし、イベントハンドラーの引数はオブジェクトと DataReceivedEventArgs のみであるため、引数を渡すことはできません。 では、グローバル変数を使用せずにこれを行うにはどうすればよいですか。
私が試したこと:
カスタムデータをハンドラーのオブジェクトパラメーターに入れようとしましたが、失敗しました。 私は立ち往生しています。
解決策 1
わかりました、私は自分でそれをしました:
C#
Material m=new Material(URL); process.OutputDataReceived +=(Object _sender, DataReceivedEventArgs _args)=>DoSomething(m, _sender, _args); public void DoSomething(Material mt,object sender, DataReceivedEventArgs e) { MessageBox.Show("Captured Data:" + e.Data); MessageBox.Show("My Data:" + mt.Info); }
[ad_2]
コメント