Tôi là một ứng dụng được viết bằng C# không có GUI hoặc giao diện người dùng, nhưng thay vào đó viết các tệp được phân tích bởi một ứng dụng khác (trong XML và các ứng dụng khác).Có thể thiết lập CultureInfo cho một ứng dụng .NET hay chỉ là một chuỗi?
Tôi có một khách hàng có CultureInfo có NumberDecimalSeparator được đặt thành dấu phẩy, gây ra lỗi phân tích cú pháp với số dấu phẩy động (PI sẽ kết thúc là 3,1415).
Tôi muốn một cách để đặt CultureInfo trên toàn cầu trong ứng dụng, cho tất cả các chuỗi. Tôi đã thử:
- The (rõ ràng) Cách tiếp cận thông thường của thiết CurrentThread.CurrentCulture như dòng đầu tiên trong Main() nhưng nó dường như được thiết lập lại.
- Biến thể/mở rộng trên http://www.codeproject.com/KB/cs/Change_App_Culture.aspx
- Làm tương tự (# 1) trên các chủ đề được tạo rõ ràng trong ứng dụng.
Và thay đổi để sử dụng định dạng rõ ràng không phải là một tùy chọn (150K + dòng, được viết bởi nhân viên cũ).
[Chỉnh sửa] Ứng dụng này liên kết với một ổ cắm và xử lý yêu cầu từ khách hàng chuyên dụng. Tùy thuộc vào loại yêu cầu, nó sinh ra các lớp xử lý khác nhau.
Xin lỗi, khi tôi đăng lần đầu, tôi phải làm rõ trong # 1 rằng (Tôi mặc dù) Tôi đã làm điều này trong tất cả các trình xử lý đã được sinh ra một cách rõ ràng.
Hóa ra tôi đã bỏ qua chuỗi/xử lý đã gây ra sự cố. Vì vậy, các ứng dụng đang hoạt động đúng bây giờ, nhưng câu hỏi vẫn còn về nếu văn hóa có thể được thiết lập trên tất cả các chủ đề.
Nếu nó có thể lặp qua tất cả các chuỗi, nó cũng sẽ giải quyết được vấn đề. Vì vậy:
Làm thế nào tôi có thể nhận được tất cả Chủ đề đối tượng (không ProcessThread) trong quá trình hiện tại?
Giúp duy nhất nếu bạn đang kiểm soát tạo thread. Đôi khi bạn phải đối phó với các chủ đề được tạo bởi .NET. Người ta không bao giờ nên quên dòng thánh ** 'System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo (" EN-US ");' ** – Bitterblue