本篇介紹如何從 Task 中傳回數值。
作法
建立泛型的 Task 類別,並在 Lambda 運算式裡回傳結果。
///<summary> 物品類別 </summary>
class Item
{
public string? Name { get; set; }
public int ID { get; set; }
}
///<summary> 執行程式 </summary>
public void Run(){
// 以 Lambda 運算式建立 Task
Task<Item> task3 = Task<Item>.Factory.StartNew(() =>
{
string s = "Printer";
int id = 15;
return new Item {ID = id, Name = s};
});
Item printer = task3.Result; // 取得 Task 執行結果
Console.WriteLine($"{printer.ID}-{printer.Name}");
}
也可以不用 Lambda 運算式達成:
///<summary> 物品類別 </summary>
class Item
{
public string? Name { get; set; }
public int ID { get; set; }
}
/// <summary> 建立新物品 </summary>
private Item NewItem(){
Item newItem = new Item();
newItem.ID = 30;
newItem.Name = "Mouse";
return newItem;
}
///<summary> 執行程式 </summary>
public void Run(){
Task<Item> task4 = new Task<Item>(NewItem); // 傳入方法建立 Task
task4.Start();
Item mouse = task4.Result; // 取得 Task 執行結果
Console.WriteLine($"{mouse.ID}-{mouse.Name}");
}