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那样放弃时间。 –