PDA

View Full Version : سوال: فهمیدن محل فراخوانی تابع



danial82
پنج شنبه 13 اسفند 1388, 21:16 عصر
با سلام
میخوام بدونم تابعی که نوشتم از کجا یا مثلا از چه فرمی فراخوانی شده

AliRezaPro
پنج شنبه 13 اسفند 1388, 22:02 عصر
چه چیزی باعث فراخوانی تابع میشه؟با sender مشکلی دارید یا به کارتان نمیاید؟مثلا با sender میتونید آن کنترلی را که باعث فراخوانی ان تایع شده را بفهمید.

CYCLOPS
جمعه 14 اسفند 1388, 07:22 صبح
سلام آقای کهزادی عزیز
شما اول اون متدی که مد نظرت هست یه Break Point جدید بزار بعدش وقتی اون متد فراخوانی شد و برنامه متوقف شد میتونی فراخوانی فعلی متد رو از پنجره Call Stack ببینی .

موفق باشی :چشمک:

danial82
جمعه 14 اسفند 1388, 12:07 عصر
ممنونم از دوستان که توجه کردند
واقع قضیه من یه متد برای ثبت مشکلات احتمالی برنامه ام نوشتم حالا میخوام تو فایلی log که برام درست میکنه برام ثبت کنه که اشکال از چه فرمی بوده

SMRAH1
جمعه 14 اسفند 1388, 12:16 عصر
سلام
اگر منظورت از بروز خطا ،ایجاد یک Exception است ،کافیه از خصوصیت StackTrace شی Exception استفاده کنی تا تک تک فراخوانی ها را داشته باشی (خط ایجاد خطا،و توابعی که فراخوانی شده تا به مکان خطا رسیده است).
موفق باشید

CYCLOPS
شنبه 15 اسفند 1388, 06:36 صبح
ممنونم از دوستان که توجه کردند
واقع قضیه من یه متد برای ثبت مشکلات احتمالی برنامه ام نوشتم حالا میخوام تو فایلی log که برام درست میکنه برام ثبت کنه که اشکال از چه فرمی بوده

خوب میتونید به این متد که قراره Log ثبت کنه یه پارامتر برای اسم فرم یا اسم Exception یا هر چیز دیگه که لازمه بفرستید . . .

danial82
یک شنبه 16 اسفند 1388, 10:29 صبح
خوب میتونید به این متد که قراره Log ثبت کنه یه پارامتر برای اسم فرم یا اسم Exception یا هر چیز دیگه که لازمه بفرستید . . .

بابك اينو كه ميدونم ميخواستم بدونم جايي هست كه بشه فهميد تابع از كجا فراخواني شده
راه ديگه غير از ايني كه گفتي

SMRAH1
یک شنبه 16 اسفند 1388, 23:13 عصر
راه ديگه غير از ايني كه گفتي
سلام
آیا این روش مشکل خاصی داره (در برنامه ی شما یا کلا) که نمی خواهید از اون استفاده کنید؟
موفق باشید

CYCLOPS
دوشنبه 17 اسفند 1388, 07:04 صبح
بابك اينو كه ميدونم ميخواستم بدونم جايي هست كه بشه فهميد تابع از كجا فراخواني شده
راه ديگه غير از ايني كه گفتي

یه مقدار در مورد برنامت بیشتر توضیح بده + کد متد Log رو بذار تا معلوم بشه روند چیزی که میخوای چی هست

اگر در زمان Design میخوای بهترین گزینه همن پنجره Call Stack هست اگر در زمان RunTime هست همون پارامتر کارت رو راه میندازه مگر اینکه کار خاص دیگه ای بخوای انجام بدی
موفق باشی :چشمک:

razavi_university
دوشنبه 17 اسفند 1388, 08:20 صبح
بابك اينو كه ميدونم ميخواستم بدونم جايي هست كه بشه فهميد تابع از كجا فراخواني شده
راه ديگه غير از ايني كه گفتي
من خودم از این روش استفاده می کنم
stacktrace در زمانی که exception اتفاق بیفتد سلسله مراتبی از خطایی که اتفاق افتاده، دستوری که باعث ایجاد ان شده، تابع، کلاس، فضای نام بر می گرداند

danial82
دوشنبه 17 اسفند 1388, 17:00 عصر
با تشکر از همه دوستان
تابعی که نوشتم اینه مطمئنا میشه کاملترش کرد



public static void LogIt(String logMessage)
{
using (StreamWriter w = File.AppendText("log.log"))
{

w.Write("\r\nLog Entry : ");
w.WriteLine("{0} {1}", DateTime.Now.ToLongTimeString(),
DateTime.Now.ToLongDateString());
w.WriteLine("-------------------------------");

w.WriteLine("");
w.WriteLine("{0}", logMessage);
w.WriteLine("");

w.WriteLine("-------------------------------");
// Update the underlying file.
w.Flush();
}
}


نحوه فراخوانی بطور مثال


catch (FormatException ex)
{
MessageBox.Show("فیلدها را بطور صحیح پر کنید");
Utilities.LogIt(ex.StackTrace);


}




Log Entry : 06:12:33 ب.ظ 2010/03/08
-------------------------------

StackTrace : at System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal)
at System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info)
at System.Int32.Parse(String s)
at Permission.UI.FrmPerson.buttonAccept_Click(Object sender, EventArgs e) in E:\Permission\Permission\UI\FrmPerson.cs:line 58
Source : mscorlib
Message : Input string was not in a correct format.

-------------------------------