在 C# 中,異步方法使用 async 修飾符定義,並且返回 Task 或 Task<TResult>。
public async Task MyAsyncMethod()
{
// 在這裡執行非同步操作
}
在異步方法中,使用 await 關鍵字來等待非同步操作完成。這樣可以使執行緒不被阻塞,並允許其他工作繼續進行。
public async Task MyAsyncMethod()
{
// 非同步操作
await SomeAsyncOperation();
// 非同步操作完成後繼續執行
}
在主程式中,以呼叫異步方法。如果主程式也是異步的,可以使用 await 關鍵字等待異步方法完成。
public async Task MainAsync()
{
await MyAsyncMethod();
// 繼續執行其他操作
}
在異步程式設計中,異常處理也是重要的一部分。可以使用 try-catch 塊來處理異常。
public async Task MyAsyncMethod()
{
try
{
// 非同步操作
await SomeAsyncOperation();
}
catch (Exception ex)
{
// 處理異常
Console.WriteLine("異常:" + ex.Message);
}
}
題目:
依照上方步驟,寫一個讀取和寫入檔案的異步程式設計
程式實作:
using System;
using System.IO;
using System.Text;
using System.Threading.Tasks;
class FileReadWriteExample
{
// 步驟1:定義異步方法
public async Task<string> ReadFileAsync(string filePath)
{
using (StreamReader reader = new StreamReader(filePath))
{
// 使用 StreamReader 的 ReadToEndAsync 方法異步讀取檔案內容
// 步驟2:使用 await 關鍵字
return await reader.ReadToEndAsync();
}
}
// 步驟1:定義異步方法
public async Task WriteFileAsync(string filePath, string content)
{
using (StreamWriter writer = new StreamWriter(filePath, false, Encoding.UTF8))
{
// 使用 StreamWriter 的 WriteAsync 方法異步寫入檔案
// 步驟2:使用 await 關鍵字
await writer.WriteAsync(content);
}
}
}
class Program
{
static async Task Main()
{
FileReadWriteExample fileReadWrite = new FileReadWriteExample();
try
{
string filePath = "D:\\sample.txt";
// 步驟3:呼叫異步方法
// 讀取檔案
string content = await fileReadWrite.ReadFileAsync(filePath);
Console.WriteLine("讀取完成!");
Console.WriteLine("內容:");
Console.WriteLine(content);
// 步驟3:呼叫異步方法
// 寫入檔案
string newText = "這是新的內容。";
await fileReadWrite.WriteFileAsync(filePath, newText);
Console.WriteLine("寫入完成!");
}
catch (Exception ex)
{
// 步驟4:處理異常
Console.WriteLine("處理檔案時出現異常:" + ex.Message);
}
}
}
期望挑戰30天持續更新成功 ~ DAY16