PDA

View Full Version : Autocomplete و ارور عدم توانایی خواندن از حافظه !



SamStar
سه شنبه 15 مرداد 1392, 20:36 عصر
دوستان من یه برنامه ویندوز بیس نوشتم که چند تا کامپیوتر بصورت شبکه از اون استفاده میکنم .
توی قسمتی از فرم اطلاعات نام خانوادگی اشخاص بصورت اتوکامپلیت هست و با زدن اولین حرف از نام خانوادگی تمام نامها رو از روی دیتابیس که روی سرور نصب هست میخونه و نشون میده.
تا اینجاش مشکلی نبوده .
البته هر از گاهی ارور زیر رو میداد و خیلی کم .
تا اینکه خواستن نام کالا هم اتوکامپلیت باشه و از روی دیتابیس خونده بشه . حالا تقریبا اکثر اوقات اتوکامپلیت اول درست کار میکنه ولی تا میری سر اتوکامپلیت دوم ارور زیر رو میده و هنگ میکنه :

Attempted to read or write protected memory. This is often an indication that other memory is corrupt

جالب اینجاس که روی سرور بدون مشکل برنامه اجرا میشه اما روی کامپیوترهای کلاینت ارور میده

اینم ارور به طور کامل : (شاید در حل مشکل کمکی بکنه )

-----Exception Type Is : UnHandled
-----Exceptiotn Message is : Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
-----Source that causes this error: System.Windows.Forms
-----StackTrace is : at System.Windows.Forms.UnsafeNativeMethods.DispatchM essageW(MSG& msg)
at System.Windows.Forms.Application.ComponentManager. System.Windows.Forms.UnsafeNativeMethods.IMsoCompo nentManager.FPushMessageLoop(Int32 dwComponentID, Int32 reason, Int32 pvLoopData)
at System.Windows.Forms.Application.ThreadContext.Run MessageLoopInner(Int32 reason, ApplicationContext context)
at System.Windows.Forms.Application.ThreadContext.Run MessageLoop(Int32 reason, ApplicationContext context)
at System.Windows.Forms.Application.Run(Form mainForm)
at Project1.Program.Main() in C:\Users\ZY\Documents\Visual Studio 2008\Projects\Project1\Project1\Program.cs:line 25

SamStar
چهارشنبه 16 مرداد 1392, 09:23 صبح
الان توی خونه هم تست کردم و دوتا لپتاپ رو باهم شیر کردم . مشکل بالا به وجود نیومد .
اما چرا توی شرکت این مشکل پیش میاد ؟
آیا ممکنه بخاطر کندی سرور توی شرکت باشه ؟
لطفا راهنمایی کنید

danialafshari
چهارشنبه 16 مرداد 1392, 09:32 صبح
سلام
تعداد سیستم های شرکت چقدر است؟
بهتره برنامه رو روی یک توپولوژی star تست کنید اگر مشکلی نبود مطمئنا مشکل از شبکه یا سیستم های شرکت است
موفق باشید

SamStar
چهارشنبه 16 مرداد 1392, 09:54 صبح
فعلا روی سرور و یک کلاینت نصبه که سرور درست کار میکنه ولی کلاینت ارور میده .
اگر مشکل از سیستم شرکته چطور وقتی یه دونه اتوکامپلیت داشتم درست کار میکرد ؟ البته گاهی این ارور رو میداد ولی به ندرت
فکر میکنم حافظه ی یه جایی گیر میکنه یا تو لوپ میمونه یا یه چیزی تو ایم مایه ها ولی اونجا کجاس ؟

SamStar
چهارشنبه 16 مرداد 1392, 09:59 صبح
این هم کد اتوکامپلیتم هست : بقیه شونم همین جوری هستن (4تا تکست باکس اتوکامپلیت )



private void txtkhrdsharh_TextChanged(object sender, EventArgs e)//اتوکامپلیت
{

AutoCompleteStringCollection namecollection = new AutoCompleteStringCollection();
BLL objbll = new BLL();
SqlDataReader rea = objbll.SelectSharhlistF(txtkhrdsharh.Text);
if (rea.HasRows == true)
{
while (rea.Read())
namecollection.Add(rea["sharh"].ToString());
}
rea.Close();

txtkhrdsharh.AutoCompleteMode = AutoCompleteMode.Suggest;
txtkhrdsharh.AutoCompleteSource = AutoCompleteSource.CustomSource;
txtkhrdsharh.AutoCompleteCustomSource = nameco //}
}

SamStar
دوشنبه 21 مرداد 1392, 21:00 عصر
ممنون از کمک های زیادتون !!!!!!!!!!!!!!!!!!!!!!!!!!!
خودم مشکل رو متوجه شدم
مشکل از کد اتوکامپلیتم بود . طوری نوشته شده که با هر بار وارد کردن حرف توی تکست باکس میره اطلاعات رو از دیتابیس میخونه که این کار لزومی نداره و چون سرور ضعیف بوده نمیتونسته اینهمه ریکوئست رو تحمل کنه

کد درستش اینه :
کسی که به ما کمک نکرد . حالا ما میزاریم شاید به درد یکی بخوره :


private void frm1_Load(object sender, EventArgs e)
{
AutoCompleteStringCollection namecollectionF = new AutoCompleteStringCollection();
BLL objbll1 = new BLL();
SqlDataReader dReader = objbll1.SelectNamelistF();
if (dReader.HasRows == true)
{
while (dReader.Read())

namecollectionF.Add(dReader["Name"].ToString());

}
else
{
MessageBox.Show("Data not found");
}
dReader.Close();

txtForooshande.AutoCompleteMode = AutoCompleteMode.Suggest;
txtForooshande.AutoCompleteSource = AutoCompleteSource.CustomSource;
txtForooshande.AutoCompleteCustomSource = namecollectionF;
{