2014-08-27 17 views
5

Zaman uyumsuz olarak adlandırmak için bu yöntemi nasıl değiştirebilirim?Eşzamansız bir dosya oluşturma

private void Write(string fileName, data) 
{ 
    File.WriteAllText(fileName, data);   
} 
+1

'StreamWriter.WriteAsync' veya' FileStream.WriteAsync' –

+0

http://msdn.microsoft.com/en-us/library/jj155757.aspx – IVAAAN123

cevap

9

FileStream.WriteAsync (Kullanmak isterseniz o :)

public async Task WriteAsync(string data) 
{ 
    var buffer = Encoding.ASCII.GetBytes(data); 

    using (var fs = new FileStream(@"File", FileMode.OpenOrCreate, 
     FileAccess.Write, FileShare.None, buffer.Length, true)) 
    { 
     await fs.WriteAsync(buffer, 0, buffer.Length); 
    } 
} 

zaman uyumsuz Edit

çalıştırmalısınız eğer bir bool belirten alır doğru aşırı kullanmak zorunda Not senin string data ve içine bak Bir byte[] dönüşümü önlemek, bir dize kabul eden daha soyut ve daha az ayrıntılı StreamWriter.WriteAsync aşırı yük kullanabilirsiniz:

public async Task WriteAsync(string data) 
{ 
    using (var sw = new StreamWriter(@"FileLocation")) 
    { 
     await sw.WriteAsync(data); 
    } 
} 
+0

Arayanlar da zaman uyumsuz olmak zorunda mı? – Prabhu

+0

@Prabhu Evet, WriteAsync'i beklemeli –

+0

Buraya veri yazıyor (hangi bir dizedir)? – Prabhu

2

Öyle gibi Task içindeki yöntemini çağırabilirsiniz: Orada bir görevi başlatmak için çeşitli yollar var ve bu sadece bunlardan biri

Task.Factory.StartNew(() => File.WriteAllText("test.txt","text")); 

, bir here daha okuyun.

+4

Bir GÇ bağlı isteği yapmak için bir threadpool parçacığı kullanmak gerekmez. Bu çağrı asenkronize edilmiyor –

+0

Bu Yuval'in cevabından daha düşük. –