मैं इस विधि को अतुल्यकालिक रूप से कॉल करने के लिए कैसे संशोधित कर सकता हूं?फ़ाइल को अतुल्यकालिक रूप से बनाना
private void Write(string fileName, data)
{
File.WriteAllText(fileName, data);
}
मैं इस विधि को अतुल्यकालिक रूप से कॉल करने के लिए कैसे संशोधित कर सकता हूं?फ़ाइल को अतुल्यकालिक रूप से बनाना
private void Write(string fileName, data)
{
File.WriteAllText(fileName, data);
}
FileStream.WriteAsync
(ध्यान दें कि आप उचित अधिभार जो एक bool
का संकेत करता है, तो यह async :)
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);
}
}
चलाना चाहिए संपादित
आप उपयोग करना चाहते हैं लेता है का उपयोग करने के अपने string data
और में देखो byte[]
में परिवर्तन से बचें, आप अधिक सारणित और कम वर्बोज़ StreamWriter.WriteAsync
ओवरलोड का उपयोग कर सकते हैं जो एक स्ट्रिंग स्वीकार करता है:
public async Task WriteAsync(string data)
{
using (var sw = new StreamWriter(@"FileLocation"))
{
await sw.WriteAsync(data);
}
}
तुम इतनी तरह एक Task
अंदर विधि कॉल कर सकते हैं:
Task.Factory.StartNew(() => File.WriteAllText("test.txt","text"));
वहाँ कई तरीके एक काम शुरू करने के लिए है और यह सिर्फ उनमें से एक है, तो आप एक अधिक here पढ़ें।
आप एक आईओ बाध्य अनुरोध करने के लिए एक ThreadPool धागे का उपयोग जरूरत नहीं है। यह कॉल को सचमुच एसिंक्रोनस –
नहीं बना रहा है यह युवाल के उत्तर से कम है। –
'StreamWriter.WriteAsync' या' FileStream.WriteAsync' –
http://msdn.microsoft.com/en-us/library/jj155757.aspx – IVAAAN123