Bu makalede C#’daki Task’dan bir değerin nasıl döndürüleceğini öğreneceğiz.
C # (4.0) ‘daki Görevden bir değer döndürmenin geleneksel yolları:
Aşağıdaki örnekte 10’a kadar sayıyorsunuz ve toplamı döndürüyorsunuz. Görevin dönüş değeri, istenen türe dönüştürülebilen Sonuç özelliği kullanılarak elde edilebilir.
Giriş parametresi olmadan:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | Task<int> task = new Task<int>(() => { int total = 0; for (int i = 0; i < 10; i++) { total += i; } return total; }); task.Start(); int sonuc = Convert.ToInt32(task.Result); |
Giriş parametresiyle:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | Task<int> task = new Task<int>(obj => { int total = 0; int max = (int)obj; for (int i = 0; i < max; i++) { total += i; } return total; }, 10); task.Start(); int sonuc = Convert.ToInt32(task.Result); |
C # (4.5) ‘daki Görevden bir değer döndürmenin yeni yolları:
Task.Run C# kullanarak:
1 2 3 4 5 6 7 8 9 10 11 | public async Task Calis() { Func<int> function = new Func<int>(() => ToplamDondur(10, 20)); int res = await Task.Run<int>(function); } private int ToplamDondur(int a, int b) { return a + b; } |
Task.Factory.StartNew C# kullanarak:
1 2 3 4 5 6 7 8 9 10 11 12 | public async Task Calis() { Func<int> function = new Func<int>(() => ToplamDondur(10, 20)); int res = await Task.Factory.StartNew<int>(function); } private int ToplamDondur(int a, int b) { return a + b; } |
Task.FromResult C# ile kullanma:
1 2 3 4 5 6 7 8 9 10 11 | public async Task Calis() { int res = await Task.FromResult<int>(DegerDondur(10, 20)); } private int DegerDondur(int a, int b) { return a + b; } |
Yorum Yap