일부 파일을 관리하는 추상 클래스 FilesManager
이 있습니다.비동기 메서드를 동 기적으로 구현
http request
을 통해 클라우드 서버에 파일을 저장하거나 읽고있을 수 있으므로이 메서드는 asynchronous
으로 표시하고 싶기 때문에 Task<>
으로 표시됩니다.
그러나 지금은 로컬 디스크에 파일을 저장합니다 (synchronusly
).
오류를 수정하려면 Task
빈칸을 반환해도 괜찮습니까? 예를 들어
각 방법은 Task<>
객체를 반환 할 것으로 예상되기 때문에 LocalDiskFilesManager
아래의 구현은, 예외를 발생
return Task.Factory.StartNew(() => { return; });
.
public abstract class FilesManager
{
public abstract Task SaveFileAsync(XDocument xDocument);
public abstract Task<XDocument> GetFileAsync(Guid file_Id);
}
// Synchronously
public class LocalDiskFilesManager : FilesManager
{
public override Task SaveFileAsync(XDocument xDocument)
{
string path = GetFilePath();
xDocument.Save(path);
// is ok to return an empty task? does it affects the performance/threads?
// return Task.Factory.StartNew(() => { return; });
}
public override Task<XDocument> GetFileAsync(Guid file_Id)
{
string path = GetFilePath(file_Id);
XDocument xDocument = XDocument.Load(path);
return xDocument;
// is ok to return an empty task? does it affects the performance/threads?
// return Task<XDocument>.Factory.StartNew(() => { return xDocument; });
}
}
는 또한 [이 답변] (http://stackoverflow.com/a/11782373/706456) – oleksii
내가 생각 참조 대답은 동기식으로 비동기 작업을 실행하는 방법을 설명하지만, 동기식 작업을 비동기로 "가짜"만드는 방법을 알아야합니다. – Catalin