PDA

View Full Version : تغییر فرمت اعداد در تمام تردها



ali_72
یک شنبه 23 فروردین 1394, 10:40 صبح
سلام
من از کد زیر برای تبدیل / به . در اعداد اعشاری هنگام فارسی بودن زبان سیستم استفاده کردم در کد زیر به خوبی کار میکنه که ترد جاری است
اما برنامه من شامل 2 ترد است در ترد دوم برنامه این خطا را میدهد:


An exception of type 'System.InvalidOperationException' occurred in mscorlib.dll but was not handled in user code Additional information: Instance is read-only.

کد من که با اجرای اون پس از ایجاد ترد دوم خطا دارم:

Thread mainThread=new Thread(new ThreadStart(MyFunc));
if (this.InvokeRequired)
{
this.Invoke((MethodInvoker)delegate
{
mainThread.CurrentCulture.NumberFormat.NumberDecim alSeparator = ".";


});
}
else
{
mainThread.CurrentCulture.NumberFormat.NumberDecim alSeparator = ".";
}


mainThread.Start();

این کد خطا ندارد اما تنها ترد اصلی برنامه را شامل می شود:


Thread.CurrentThread.CurrentCulture.NumberFormat.N umberDecimalSeparator = ".";

plus
یک شنبه 23 فروردین 1394, 16:23 عصر
شی CultureInfo در Thread مربوطه Read-Only هست. باید یک کپی از CultureInfo بگرید، تغییرات رو اعمال کنید و به Thread انتساب بدید.
بجای

mainThread.CurrentCulture.NumberFormat.NumberDecim alSeparator = ".";

از

CultureInfo ci = (CultureInfo)mainThread.CurrentCulture.Clone();
ci.NumberFormat.NumberDecimalSeparator = ".";
mainThread.CurrentCulture = ci

استفاده کنید.

ali_72
دوشنبه 24 فروردین 1394, 07:22 صبح
ممنون دوست عزیز
پاسخ شما کاملا صحیح بود ممنونم از راهنماییت