2016-03-22 22 views
-3

Yangın yöntemini unutup ben için farklı konuları refereYangın ve C#

C# yöntemini unutmak 'Ateş ve C# unut'

yani Simplest way to do a fire and forget method in C#? . . ve birkaç kaç,

ama kodunu i gibi çıktı bekliyor duyuyorum

static void Main(string[] args) 
    { 
     for (int i = 0; i < 5; i++) 
     { 
      //fireAway(i); 
      Task.Factory.StartNew(() => fireAway(i)); 
     } 
     Console.WriteLine("Main Finished"); 
     Console.Read(); 
    } 

public static void fireAway(int i) 
    { 
     System.Threading.Thread.Sleep(5000); 
     Console.WriteLine("FireAway" + i); 
    } 

aşağıdaki yazdı bir same.i ile bir konu daha var

Ana bitirdi

FireAway0

FireAway1

FireAway2

FireAway3

FireAway4

ancak çıkış Ana

olduğunu bitirdi

FireAway5

FireAway5

FireAway5

FireAway5

FireAway5

çok dürüstçe ben konseptini parçacığı için yeni, yardıma ihtiyacım var. Beklenen çıktılarla nasıl buluşabilirim ..?

+3

http://stackoverflow.com/questions/271440/captured- değişken-in-a-döngü-in-c-keskin –

+0

fireworks yöntemi (i) değişken üzerinde kapatır ve bu yöntem 5 saniye beklediğiniz için, (i) değeri yazmadan önce 5 olur –

cevap

-1

Sen yöntem yineleme bitirmek sonra çalışmaya başlayacaktır çünkü değil, here

1

döngü tamamlandıktan sonra ipler başlatılır bkz i kullanmak, sizin yöntemine parametre geçmelidir. i 5. değildir döngü değerini tamamlandığında Sen StartNew göndermeden önce i değerini yakalamak zorunda (..)

for (int i = 0; i < 5; i++) 
{ 
     int tmp = i; 
     Task.Factory.StartNew(() => fireAway(tmp)); 
} 
İlgili konular