내가 비동기 읽기 콜백 함수를 쓰고 있어요 나는 순간의 C#을 배우고로 다음과 같은 재귀 경우 부탁드립니다 (그것은 내 아니지만 광산과 유사합니다 구성입니다) :비동기 I/O 콜백 함수가 재귀 적입니까?
protected void ReadCompleted(IAsyncResult iResult)
{
byte[] byIn = (byte[])iResult.AsyncState;
try
{
File.EndRead(iResult);
try
{
HandleDataReceived(byIn);
}
finally
{
BeginAsyncRead(); //recursion??
}
}
catch (IOException ioexc)
{
// Device has been removed!
}
}
지금은 특히 재귀에 대한 것이 아니지만 엄청난 메모리를 소비 할 가능성이있는 무언가를 작성할 때 피하고 싶습니다. 이 전체 함수 자체는 BeginAsync() 내에서 호출됩니다.
이 함수는 BeginAsyncRead 내에서 호출되고 다른 호출은 BeginAsyncRead에 배치되었으므로 여기에 나타났습니다. BeginAsyncRead 함수의 또 다른 인스턴스를 만들 수 있다고 생각했습니다. –
그럴 경우 그렇습니다. 그러나 f1 -> f2 -> f3 -> f4 -> f1과 같은 재귀 호출은 이해하기 어렵고 디버깅하기가 어렵습니다. – Michael