0
的異步版本,我有一個反序列化類型創建一個通用的方法
public static T Deserialize<T>(string xmlString)
{
if (string.IsNullOrWhiteSpace(xmlString))
return default(T);
using (MemoryStream memStream = new MemoryStream(Encoding.Unicode.GetBytes(xmlString)))
{
memStream.Position = 0;
System.Xml.Serialization.XmlSerializer serializer = new System.Xml.Serialization.XmlSerializer(typeof(T));
return (T)serializer.Deserialize(memStream);
}
}
現在我希望讓我試着像這樣的異步版本的通用方法。
public static Task DeserializeAsync(string xmlString)
{
return Task.Run(() =>
{
Deserialize(xmlString));
});
}
顯然異步方法有語法錯誤,因爲我缺少T.
我也嘗試這樣做,我得到的錯誤。
public static Task<T> DeserializeAsync(string xmlString)
{
return Task.Run(() =>
{
Deserialize<T>(xmlString));
});
}
任何人都可以看到編寫async方法的正確方法嗎?
爲什麼使它'async'?沒有I/O需要等待。如果方法採用'Stream'而不是'string',那麼你可以獲得一些東西。 –
等待在調用方法中完成,即等待DeserializeAsync(blahblah);那是不對的? – Gaz83
那麼等待的調用方法是什麼? DeserializeAsynch方法是CPU密集型的,所以它不能像它需要做一些I/O那樣放棄時間。 –