Trong C# có một phương thức SetApartmentState
trong lớp Thread
. Làm cách nào để làm điều tương tự trong C++?Tương đương với Thread.SetApartmentState trong C++ là gì?
Trả lời
Đối với các quy trình không được quản lý, bạn kiểm soát mô hình căn hộ được sử dụng cho một luồng bằng cách chuyển các tham số thích hợp tới CoInitializeEx()
. Larry Osterman đã viết lên một lớn dẫn chút đến những:
...
Khi a thread cuộc gọiCoInitializeEx
(hoặcCoInitialize
), thread nói với COM nào trong hai loại căn hộ đó là chuẩn bị để máy chủ. Để chỉ ra rằng chuỗi phải nằm trong MTA, bạn chuyển cờCOINIT_MULTITHREADED
tớiCoInitializeEx
. Để cho biết rằng chuỗi cần lưu trữ STA, hãy gọiCoInitialize
hoặc chuyển cờCOINIT_APARTMENTTHREADED
tớiCoInitializeEx
.
...
- http://blogs.msdn.com/larryosterman/archive/2004/04/28/122240.aspx
C++ chưa được hỗ trợ trong chuỗi. Những gì bạn đang tìm kiếm phụ thuộc vào cách bạn đang thực hiện các chủ đề trong ứng dụng của bạn. Win32? pthreads? boost :: threads? Cho dù API bạn đang sử dụng sẽ xác định câu trả lời cho câu hỏi của bạn.
EDIT: trông như thế này có thể có một ví dụ cho bạn: http://msdn.microsoft.com/en-us/library/system.threading.apartmentstate.aspx
Dường như nó áp dụng cho quản lý C++.