Task
'u kullanabilirsiniz. Kodunuzun başka bir bölümünü belirtmiyorsunuz, bu yüzden ne yapmak istediğinizi bilmiyorum. Task.Wait
kullanmaktan kaçınmanızı tavsiye ediyorum çünkü bu UI iş parçacığını engelliyor ve görevin bitmesini beklemiyor, bu gerçekten async olmadı! Dosyada görev okunduktan sonra başka bir eylem yapmak isterseniz, task.ContinueWith
'u kullanabilirsiniz.
İşte tam bir örnek, sadece bir arka plan iş parçacığı okuma yapabileceği
static void Main(string[] args)
{
string filePath = @"FILE PATH";
Task<string[]> task = Task.Run<string[]>(() => ReadFile(filePath));
bool stopWhile = false;
//if you want to not block the UI with Task.Wait() for the result
// and you want to perform some other operations with the already read file
Task continueTask = task.ContinueWith((x) => {
string[] result = x.Result; //result of readed file
foreach(var a in result)
{
Console.WriteLine(a);
}
stopWhile = true;
});
//here do other actions not related with the result of the file content
while(!stopWhile)
{
Console.WriteLine("TEST");
}
}
public static string[] ReadFile(string filePath)
{
List<String> lines = new List<String>();
string line = "";
using (StreamReader sr = new StreamReader(filePath))
{
while ((line = sr.ReadLine()) != null)
lines.Add(line);
}
Console.WriteLine("File Readed");
return lines.ToArray();
}
UI iş parçacığı engelleme olmadan bunu nasıl. .NET 4 hala TPL, iş parçacığı ve BackgroundWorkers içerir. –
Sorunuz belirsiz. ReadLineAsync() ', özellikle diğer ilgili özelliklere, özellikle" async "/" await "öğesine sahipseniz kullanışlıdır. .NET 4.0 için Async CTP veya Async Hedefleme Paketi kullanıyor musunuz? Değilse, ReadLineAsync() 'gibi bir yöntem kullanma planınız nedir? .NET'in zaten "ReadLineAsync()" gibi bir şey varsa, muhtemelen 4.5 olarak eklememiş olabileceğini unutmayın. Siz ya da bir başkasının yazması gerekecek ya da yazmış olacaksınız. –
İstediğiniz tek şey, ReadLineAsync() 'ın _some_ uygulamasıysa, [.NET sürümünü 4.5'den kopyalayabilirsiniz] (https://referencesource.microsoft.com/#mscorlib/system/io/streamreader.cs,884afa7bffa068d0). Sonuçta açık kaynak. –