Wie kann ich diese Methode ändern, um sie asynchron aufzurufen?Eine Datei asynchron erstellen
private void Write(string fileName, data)
{
File.WriteAllText(fileName, data);
}
Wie kann ich diese Methode ändern, um sie asynchron aufzurufen?Eine Datei asynchron erstellen
private void Write(string fileName, data)
{
File.WriteAllText(fileName, data);
}
Blick in FileStream.WriteAsync
(Beachten Sie die richtige Überlastung verwenden, die angibt, eine bool
nimmt, wenn es 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);
}
}
bearbeiten
laufen sollten, wenn Sie Ihre string data
verwenden möchten, und Vermeiden Sie die Umwandlung in eine byte[]
, können Sie die abstrahierte und weniger ausführliche StreamWriter.WriteAsync
Überladung verwenden, die eine Zeichenfolge akzeptiert:
public async Task WriteAsync(string data)
{
using (var sw = new StreamWriter(@"FileLocation"))
{
await sw.WriteAsync(data);
}
}
können Sie rufen die Methode in einem Task
etwa so:
Task.Factory.StartNew(() => File.WriteAllText("test.txt","text"));
Es gibt zahlreiche Möglichkeiten, ist eine Aufgabe zu starten und das ist nur einer von ihnen, ein Sie mehr here lesen.
Sie brauchen nicht einen Threadpool-Thread verwenden, um eine IO gebundene Anfrage zu machen. Dies macht den Anruf nicht wirklich asynchron –
Dies ist Yuvals Antwort unterlegen. –
'StreamWriter.WriteAsync' oder' FileStream.WriteAsync' –
http://msdn.microsoft.com/en-us/library/jj155757.aspx – IVAAAN123