JScript.NET에서 BeginRead()를 사용하여 비동기 IO를 수행하려고하는데 콜백 함수가 제대로 작동하지 않습니다. I no로 MulticastDelegate 및 위임 유형 AsyncCallback과베이스에 모두 명시 적 캐스트를하고 시도JScript.NET에서 대리자 형식으로 캐스트가 실패 함
Unhandled Exception: System.InvalidCastException: Unable to cast object of type 'Microsoft.JScript.Closure' to type 'System.AsyncCallback'.
at JScript 0.readFileAsync(Object this, VsaEngine vsa Engine)
at JScript 0.Global Code()
at JScript Main.Main(String[])
:
function readFileAsync() {
var fs : FileStream = new FileStream('test.txt', FileMode.Open, FileAccess.Read);
var result : IAsyncResult = fs.BeginRead(new byte[8], 0, 8, readFileCallback), fs);
Thread.Sleep(Timeout.Infinite);
}
var readFileCallback = function(result : IAsyncResult) : void {
print('ListenerCallback():');
}
예외는 캐스트 실패는 : 여기
코드입니다 이익.대표는 예를 들어, 명시 적으로 새로운 AsyncCallback를 만들기위한 필요성을 제거, 자동으로 생성 해야하는 :
BeginRead(... new AsyncDelegate(readFileCallback), object);
그리고 당신이 대리자를 만들려고하면 사실
명시 적으로 컴파일러가 오류를 발행합니다. 여기에 뭔가 빠져 있어야합니다.