Bagikan melalui


Antarmuka IWorkerThreadClient

IWorkerThreadClient adalah antarmuka yang diimplementasikan oleh klien kelas CWorkerThread .

Penting

Kelas ini dan anggotanya tidak dapat digunakan dalam aplikasi yang dijalankan di Windows Runtime.

Sintaks

__interface IWorkerThreadClient

Anggota

Metode

Nama Deskripsi
CloseHandle Terapkan metode ini untuk menutup handel yang terkait dengan objek ini.
Menjalankan Terapkan metode ini untuk menjalankan kode ketika handel yang terkait dengan objek ini menjadi sinyal.

Keterangan

Terapkan antarmuka ini ketika Anda memiliki kode yang perlu dijalankan pada utas pekerja sebagai respons terhadap handel yang menjadi sinyal.

Persyaratan

Header: atlutil.h

IWorkerThreadClient::CloseHandle

Terapkan metode ini untuk menutup handel yang terkait dengan objek ini.

HRESULT CloseHandle(HANDLE  hHandle);

Parameter

hHandle
Handel yang akan ditutup.

Tampilkan Nilai

Mengembalikan S_OK pada keberhasilan, atau kesalahan HRESULT pada kegagalan.

Keterangan

Handel yang diteruskan ke metode ini sebelumnya dikaitkan dengan objek ini dengan panggilan ke CWorkerThread::AddHandle.

Contoh

Kode berikut menunjukkan implementasi sederhana dari IWorkerThreadClient::CloseHandle.

HRESULT CloseHandle(HANDLE hObject)
{
   // Users should do any shutdown operation required here.
   // Generally, this means just closing the handle.

   if (!::CloseHandle(hObject))
   {
      // Closing the handle failed for some reason.
      return AtlHresultFromLastError();
   }

   return S_OK;
}

IWorkerThreadClient::Execute

Terapkan metode ini untuk menjalankan kode ketika handel yang terkait dengan objek ini menjadi sinyal.

HRESULT Execute(DWORD_PTR dwParam, HANDLE hObject);

Parameter

dwParam
Parameter pengguna.

hObject
Pegangan yang telah menjadi sinyal.

Tampilkan Nilai

Mengembalikan S_OK pada keberhasilan, atau kesalahan HRESULT pada kegagalan.

Keterangan

Handel dan DWORD/pointer yang diteruskan ke metode ini sebelumnya dikaitkan dengan objek ini dengan panggilan ke CWorkerThread::AddHandle.

Contoh

Kode berikut menunjukkan implementasi sederhana dari IWorkerThreadClient::Execute.

HRESULT Execute(DWORD_PTR dwParam, HANDLE hObject)
{
   // Cast the parameter to its known type.
   LONG* pn = reinterpret_cast<LONG*>(dwParam);

   // Increment the LONG.
   LONG n = InterlockedIncrement(pn);

   // Log the results.
   printf_s("Handle 0x%08X incremented value to : %d\n", (DWORD_PTR)hObject, n);

   return S_OK;
}

Lihat juga

Kelas
Kelas CWorkerThread