콜백을 사용할 수 있지만 은 C#의 async/await syntax으로 대체됩니다. 내가 구문 그러나 말했다 설명하기 전에, 당신이 Action
들과 같은를 달성 할 수있는 방법을 보여 드리겠습니다 :이 방법으로
/*Action is a reference type, so its assignment is no different. Its value is a lambda
expression (http://msdn.microsoft.com/en-us/library/bb397687.aspx),
which you can think of as an anonymous method.*/
private Action<object> callback = o =>
{
object result = o;
this.Foo1();
this.Foo2();
};
/*It's good practice in C# to append 'Async' to the name of an asynchronous method
in case a synchronous version is implemented later.*/
this.Model.GetStudentKeysAsync(keysList, callback);
, 당신의 GetStudentsAsync
방법과 같이 콜백을 호출해야합니다 :
public void GetStudentsAsync(List<string> keys, Action<object> callback)
{
var returnValue = null;
//do some stuff...
callback(returnValue);
}
또한 직접 매개 변수로 람다 식을 전달할 수 있지만
.NET 4.5 (4.0 및 .NET
Microsoft Async package 사용)
this.Model.GetStudentKeysAsync(keysList, o =>
{
this.Foo1();
this.Foo2();
});
, 당신은 C# 5에서 제공하는 async
및 await
키워드를 사용할 수 있습니다 : 당신은`async`와`await` 같은 것을 사용하여 의미
IEnumerable<StudentModel> students = await this.Model.GetStudentsAsync(keyList);
다음과 같이
은 단순히 위의 메소드를 호출? – rae1
@ rae1 아니오, 정상적인 콜백 만 추가하면 Foo 메소드를 넣을 수 있습니다. –
글쎄, 내가 대답에서 언급 한 것처럼, 그 자체가 비동기 적이어야한다. – rae1