В примере C # на этой странице в ProcessImagesInBulk
вы увидите следующее:
AsyncCallback readImageCallback = new AsyncCallback(ReadInImageCallback);
for(int i=0; i<numImages; i++)
{
...
fs.BeginRead(state.pixels, 0, numPixels, readImageCallback, state);
}
В этом случае вызов FileStream.BeginRead
запускает асинхронный ввод-вывод. Параметр обратного вызова (здесь: readImageCallback
) - это то, что вызывается после завершения чтения.
Привязка дескриптора к потоку абстрагируется от кода библиотеки. Я не уверен, почему эта статья даже упоминает об этом. В случае .NET обратный вызов вызывается в .NET ThreadPool , что связывает поток с завершением ввода / вывода.