15 Nisan 2018 Pazar

Parallel.Invoke Metodu - Belirtilen Metodları Paralel Çağırmak İçin Kullanılır

Giriş
Şu satırı dahil ederiz.
using System.Threading.Tasks;
Belirtilen metodları paralel çağırmak için kullanılır. Açıklaması şöyle
The exceptions during the execution of the methods For, ForEach, or Invoke are collated until the tasks are completed and thrown as an AggregateException exception.
Örnek
Şöyle yaparız.
Parallel.Invoke(
  () => QuickSort(array, left, j),
  () => QuickSort(array, i, right)
);
Örnek
4 tane metodu paralel çağırıp sonuçlarını almak için şöyle yaparız.
RestResult<Agent> agentResults = null;
RestResult<Company> companyResults = null;
RestResult<Contact> contactResults = null;
RestResult<Ticket> ticketResults = null;

Parallel.Invoke(
    () => agentResults = agentService.GetAll(Epoch),
    () => companyResults = companyService.GetAll(Epoch),
    () => contactResults = contactService.GetAll(Epoch),
    () => ticketResults = ticketService.GetAll(Epoch)
);
Diğer
Bu metod altta Task sınıfını kullanır. Yani şuna benzer bir kod üretir.
RestResult<Agent> agentResults;
RestResult<Company> companyResults;
RestResult<Contact> contactResults;
RestResult<Ticket> ticketResults;

var t1 = Task.Run(() => agentResults = agentService.GetAll(Epoch))
var t2 = Task.Run(() => companyResults = companyService.GetAll(Epoch));
var t3 = Task.Run(() => contactResults = contactService.GetAll(Epoch));
var t4 = Taks.Run(() => ticketResults = ticketService.GetAll(Epoch));

await Task.WhenAll(t1,t2,t3,t4);

Hiç yorum yok:

Yorum Gönder