我有一些有時可以運行的異步代碼,有時不會。有了這個代碼,文件總是創建,但有時它是空的(我總是發送具有內容的文件):我應該取消異步隨機工作代碼嗎?
[HttpPost]
[Route("api/inventory/sendxml/{userId}/{pwd}/{filename}")]
public async void SendInventoryXML(String userId, String pwd, String fileName)
{
Task task = Request.Content.ReadAsStreamAsync().ContinueWith(t =>
{
var stream = t.Result;
using (FileStream fileStream = File.Create(String.Format(@"C:\HDP\{0}.xml", fileName), (int)stream.Length))
{
byte[] bytesInStream = new byte[stream.Length];
stream.Read(bytesInStream, 0, (int)bytesInStream.Length);
fileStream.Write(bytesInStream, 0, bytesInStream.Length);
}
});
}
所以,我應該取消Asyncify這個隨機工作代碼,如果是這樣,怎麼樣(什麼會完成同樣的事情沒有異樣的變幻莫測(假設這是造成這種隨機行爲的問題))?
其他人告訴我,幾天前,但將其更改爲Task導致它根本無法工作 - 當我這樣做時代碼從未達到。 – 2014-09-10 22:50:41
異步將使用返回類型或不返回類型。如果他們想要返回類型,完全取決於開發人員。你有回調處理程序嗎?我會假設空文件的情況下拋出一個異常和沒有回叫處理程序你不知道。 – Ottak 2014-09-10 22:56:43
返回'void',你不知道你的代碼是否崩潰。一個「任務」將捕獲異常。 – 2014-09-10 22:58:44