2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ファイル書き込みにTaskを使う (c#)

Last updated at Posted at 2024-08-15

やりたいこと

テキストボックスに入力した文字列をボタン操作で.\example.txtへ書き込む処理を作る。
このとき、書き込む処理をTaskを使って実行する。

特徴

ボタンを押すとラベルに「処理を開始しました。」と表示される。
書き込む処理が別のタスクとして実行される。
入力欄は初期化される。
入力チェックを行うことでボタンの二重操作は無視される。
保存処理が完了する前に別の操作が可能となる。

コード

 private async void button1_Click(object sender, EventArgs e)
 {
     label1.Text = "処理を開始しました。";
     Debug.WriteLine("処理を開始しました。");

     var txt = textBox1.Text;
     if (String.IsNullOrEmpty(txt)) {
         MessageBox.Show("入力必須です");
         return;
     }
     
     Task.Run(async () =>
     {
         using (StreamWriter reader = new StreamWriter("example.txt"))
         {
             await reader.WriteLineAsync(txt);
             await Task.Delay(3000);
             label1.Invoke(() =>
             {
                 label1.Text = "処理が終了しました。";
             });
             Debug.WriteLine("処理が終わりました。");

         }
     });
     textBox1.Text = "";
     return;
 }

### 感想
画面がフリーズせず、処理を可視化しながら次の操作を行うことができるためUXに良い影響を与えると思われる。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?