Tôi có một chuỗi được quản lý đang chờ, bị chặn, trong một mã không được quản lý (cụ thể, nó trên một cuộc gọi đến NamedPipeServerStream.WaitForConnection() tối đa gọi vào mã không được quản lý, và không cung cấp thời gian chờ).Làm cách nào để chấm dứt chuỗi được quản lý bị chặn trong mã không được quản lý?
Tôi muốn tắt luồng xuống một cách gọn gàng.
Thread.Abort() không có hiệu lực cho đến khi mã trở về lĩnh vực được quản lý, mà nó sẽ không làm cho đến khi khách hàng tạo kết nối, mà chúng tôi không thể đợi).
Tôi cần một cách "gây sốc" nó ra khỏi mã không được quản lý; hoặc một cách để chỉ giết sợi chỉ ngay cả khi nó ở trong vùng đất không được quản lý.
Bất kỳ lý do nào bạn không sử dụng NamedPipeServerStream.BeginWaitForConnection() thay thế? – SpaceghostAli
Về cơ bản vì chuỗi muốn chờ "mãi mãi" cho kết nối (trừ khi tắt máy). Với Begin/End WaitForConnection, tôi phải bắt đầu, chờ một giây, kiểm tra kết nối hoặc hết thời gian chờ và lặp lại thời gian chờ. –
Ok tôi hiểu rồi. Vâng một chút sửa đổi để câu trả lời của dtb sẽ cung cấp cho bạn những gì bạn cần. Thay vì chờ đợi trên asyncResult, hãy đợi trên WaitHandle được chia sẻ mà bạn đã đặt từ mã mà sẵn sàng hủy bỏ chuỗi. – SpaceghostAli