PDA

View Full Version : سوال: خالی کردن stack جهت رفع خطای (System.StackOverflowException)



FVVSBN
چهارشنبه 14 مهر 1389, 18:55 عصر
سلام

بعد از مدتی کار کردن میگه پشته پر شده.

چطوری خالیش کنم؟

hamid.shekasteh
چهارشنبه 14 مهر 1389, 19:13 عصر
بعد از مدتی کار کردن میگه پشته پر شده.

چطوری خالیش کنم؟

سلام ، من فکر می کنم اگر پشته رو خالی کنید در واقع صورت مسئله رو پاک کردید.
بهتره ببینید کجا ، چه کدی نوشتید که باعث این ارور شده.

این خطا می تونه به خاطر فراخوانی بازگشتی توابع باشد.

FVVSBN
چهارشنبه 14 مهر 1389, 19:49 عصر
سلام ، من فکر می کنم اگر پشته رو خالی کنید در واقع صورت مسئله رو پاک کردید.
بهتره ببینید کجا ، چه کدی نوشتید که باعث این ارور شده.

این خطا می تونه به خاطر فراخوانی بازگشتی توابع باشد.


بله. به خاطر فراخوانی بازگشتی دوجانبه هست.

رکورد ها رو اتوماتیک میسازه و درج میکنه در sql بعد از 425 رکورد این خطا رو میده.

یه سوال (میتونه مشکلم رو حل کنه):

چجوری این کد رو بهینه کنم. در صورتی که objDataAdapter و objDataSet نداشته باشم حله.





SqlDataAdapter objDataAdapter = new SqlDataAdapter("select dbo.Whays_ID_Returner()", strConnectionString);

string strNewId="";
DataSet objDataSet = new DataSet();
objDataAdapter.Fill(objDataSet);
strNewId = objDataSet.Tables[0].Rows[0][0].ToString();
objDataSet.Clear();
return strNewId;

mmd2009
پنج شنبه 15 مهر 1389, 06:25 صبح
با سلام

مقدار یک نتیجه رو اینطوری برگردون :



private string Returnvalue()
{
SqlDataAdapter objDataAdapter = new SqlDataAdapter("select dbo.Whays_ID_Returner()", strConnectionString);
return objDataAdapter.SelectCommand.ExecuteScalar().ToStr ing();
}

FVVSBN
پنج شنبه 15 مهر 1389, 11:24 صبح
ممنون.
حالا میشه بگیم بعد از اینکه مقدار رو گرفت دیتا اداپتر از حافظه بره؟

FastCode
پنج شنبه 15 مهر 1389, 12:14 عصر
وااای.
اولاً که متغیر ها توی heap هستن نه stack.
دوماً که هیچ آدم عاقلی خودش محض خنده stack رو خراب نمیکنه.
3.خراب کردن Stack به این راحتی نیست.
4.مشکل کد شما از این چند خط نیست(لطفاً 10 خط بالا و 10 خط پایین رو هم بزارید.)

FVVSBN
پنج شنبه 15 مهر 1389, 19:06 عصر
وااای.
اولاً که متغیر ها توی heap هستن نه stack.
دوماً که هیچ آدم عاقلی خودش محض خنده stack رو خراب نمیکنه.
3.خراب کردن Stack به این راحتی نیست.
4.مشکل کد شما از این چند خط نیست(لطفاً 10 خط بالا و 10 خط پایین رو هم بزارید.)
مشکلش متمرکز نیست.

هر بار از یه جا خطا میده... بستگی داره استک روی چه کدی سر ریز کنه.

FastCode
پنج شنبه 15 مهر 1389, 19:12 عصر
مشکلش متمرکز نیست.

هر بار از یه جا خطا میده... بستگی داره استک روی چه کدی سر ریز کنه.

یه متغیر Static int تعریف کنید.
یک خط بالاتر از جایی که عکسش رو گزاشتید مقدار اون رو یکی اضافه کنید.
خط بعد یک شرط بنویسید و وقتی مقدارش مساوی 5 شده بود System.Diagnostics.Debugger.Break
call stack رو باز کنید.
میتونید مشکلتون رو ببینید.