私はC#と一般的なプログラミングを習得しようとしており、問題が発生しました。私は答えを検索しようとしましたが、失敗しました。別の話題を複製しているとすみませます。デリゲートとイベントの使用方法は?
フォームには1つのウィンドウフォーム(Form1)、外部クラス(Class1)、ボタンおよびラベルがあります。 このクラスは簡単なファイルシュレッダーで、ボタンをクリックすると開始されます。 Label1.textは外部クラスから更新し、現在どのファイルが細断処理されているかを表示する必要があります。
私は、デリゲートとイベントを使って正しく動作させる必要があることを知りましたが、正しく使用する方法はわかりません。ここ コード:
//Form1
private async void button2_Click(object sender, EventArgs e)
{
var task = new Task(() =>
{
check = true;
bool success = FileUtilities.Shred(textBox1.Text);
});
task.Start();
public void ChangeName(string text)
{
label3.Text = text;
}
//Class1
public static bool ShredFile(string filePath, bool shouldDelete = true)
{
bool success = true;
try
{
FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Write);
//Label1.text = filePath; - should be like that.
私はプロパティにアクセスするためにpublic void ChangeName
を使用しようとしましたが、それはうまくいきませんでした。私はデリゲート、イベント、そしてどこにこのイベントを購読するのかを理解できません。
更新日:私は問題が何かを発見しました。私のプログラムにはいくつかのスレッドがあり、私のクラスを通してフォームのラベルにアクセスできませんでした。私はコールバックを使用しなければならず、その後、サブスクリプションとイベントは完全に機能しました。ありがとう、Thorsten Dittmar、正しい方法を示しています。
デリゲートのドキュメントをご覧ください。 http://stackoverflow.com/documentation/c%23/1194/delegates#t=201609141320451060485 – Jacobr365