Поделиться через


PreAllocatedOverlapped.UnsafeCreate Метод

Определение

Важно!

Этот API несовместим с CLS.

Инициализирует новый экземпляр PreAllocatedOverlapped класса , указывая делегат, который вызывается при завершении каждой асинхронной операции ввода-вывода, предоставленный пользователем объект, предоставляющий контекст, и управляемые объекты, которые служат буферами.

public:
 static System::Threading::PreAllocatedOverlapped ^ UnsafeCreate(System::Threading::IOCompletionCallback ^ callback, System::Object ^ state, System::Object ^ pinData);
[System.CLSCompliant(false)]
public static System.Threading.PreAllocatedOverlapped UnsafeCreate (System.Threading.IOCompletionCallback callback, object? state, object? pinData);
[<System.CLSCompliant(false)>]
static member UnsafeCreate : System.Threading.IOCompletionCallback * obj * obj -> System.Threading.PreAllocatedOverlapped
Public Shared Function UnsafeCreate (callback As IOCompletionCallback, state As Object, pinData As Object) As PreAllocatedOverlapped

Параметры

callback
IOCompletionCallback

Делегат IOCompletionCallback , представляющий метод обратного вызова, вызываемый при завершении каждой асинхронной операции ввода-вывода.

state
Object

Предоставленный пользователем объект, который отличает NativeOverlapped экземпляр, созданный из этого объекта, от других NativeOverlapped экземпляров. Может иметь значение null.

pinData
Object

Объект или массив объектов , представляющих входной или выходной буфер для операций. Каждый объект представляет буфер, например, массив байтов. Может иметь значение null.

Возвращаемое значение

Новый экземпляр PreAllocatedOverlapped.

Атрибуты

Исключения

callback имеет значение null.

Этот метод был вызван после удаления ThreadPoolBoundHandle.

Комментарии

Новый PreAllocatedOverlapped экземпляр можно передать в AllocateNativeOverlapped(PreAllocatedOverlapped), чтобы создать NativeOverlapped экземпляр, который может быть передан операционной системе в перекрывающихся операциях ввода-вывода. Один PreAllocatedOverlapped экземпляр можно использовать только для одной собственной операции ввода-вывода одновременно. Однако состояние, хранящееся в экземпляре PreAllocatedOverlapped , можно повторно использовать для последующих собственных операций. ExecutionContext не перетекает в вызов обратного вызова.

Примечание

Буферы, указанные в , pinData закрепляются до вызова Dispose() .

Применяется к