AccessViolationException trong bối cảnh này có thể có nghĩa là mã C không được quản lý của bạn được vặn lên. Nó ghi đè lên đống hoặc một cái gì đó. Hãy nhớ rằng nhiều mẩu mã đã không bao giờ viết được chạy trong một môi trường đa luồng như của ASP.NET. Họ thậm chí không bao giờ được thử nghiệm trong một môi trường như vậy, hoặc chỉ được thử nghiệm sử dụng một số "desktop" hình thức đa luồng mà không áp dụng cho ASP.NET. Tôi đã có một vấn đề như thế này một lần. Một DLL của bên thứ ba mà tuyên bố là chủ đề an toàn là rất không an toàn. Bằng cách gắn một trình gỡ lỗi không được quản lý để quá trình công nhân ASP.NET, nó đã có thể thấy rằng các ứng dụng được viết trên tất cả các thư viện đống thời gian chạy C, và heap đã phàn nàn cay đắng về nó. Và không có gì đã được nghe đến việc khiếu nại. Nó là cần thiết để bọc các cuộc gọi đến mã này trong một khối khóa - để đảm bảo rằng chỉ có một thread có thể gọi nó là tại một thời điểm. Điều này là đủ để ngăn chặn tất cả các tai nạn, thậm chí dưới tải. Điều này vẫn có thể không đủ cho tất cả các mã không được quản lý. Một đoạn mã, cho rằng tất cả các cuộc gọi sẽ xảy ra trên cùng một sợi, hoặc tất cả các cuộc gọi từ cùng một "phiên" xảy ra trên cùng một sợi, sẽ thất vọng, và có thể rất tốt tai nạn hoặc làm điều gì đó tồi tệ hơn. Trong trường hợp đó, bạn có thể cần phải chuyển mã vào một dịch vụ Windows riêng biệt mà chỉ cho phép một chủ đề duy nhất để truy cập vào thư viện đó, bao giờ hết.
đang được dịch, vui lòng đợi..
