PDA

View Full Version : سوال: سوال CallBack



mazaher5723
یک شنبه 17 دی 1391, 08:05 صبح
سلام دوستان
منظور از Callback تو زبان سی یا سی شارپ چیه؟ منظور همون توابع بازگشتیه؟یا نه؟
لطف کنید توضییح بدید

mazaher5723
یک شنبه 17 دی 1391, 13:33 عصر
کسی نیست راهنماییم کنه؟

PhoenixNet
یک شنبه 17 دی 1391, 13:50 عصر
سلام

CallBack توابع بازگشتی نیست.در بعضی توابع میخواهید که بعد از انجام کار تابعی که شما به آن میدهید اجرا شود.یک جورایی همون کار event رو انجام میدن.

plus
یک شنبه 17 دی 1391, 15:39 عصر
CallBack رو بیشتر تو زبان هایی مثل C/CPP شنیدم.توی #C از delegate واسه این موضوع استفاده میشه.

govaleshgar2
یک شنبه 17 دی 1391, 16:09 عصر
Callback یک مفهوم خاص زبان برنامه نویسی بخصوصی نیست. این یک اصطلاح است که معمولاً برای نام گذاری یک تابع استفاده میشود، تابعی که استفاده کننده باید آن را فراهم کند تا در زمان مشخصی صدا زده شود.

در نظر بگیرید که متود X وظیفه خواندن یک سری اطلاعات از اینترنت را دارد. متود X یک تابع را در ورودی میگیرد و وقتی که خواندن اطلاعات تمام شد آن تابع را فرامیخواند تا اطلاعات خوانده شده را به شما برساند. وقتی شما X را صد میزنید برنامه شما منتظر نمی ماند تا خواندن اطلاعات تمام شود و مقدار را در خروجی بگیرد(چون این کار ممکن است طولانی شود) بلکه پس از فراخوانی متود X کدهای بعدی اجرا میشود و متود X تابعی را که سپرده بودید تا داده های شما را بگیرد صدا خواهد زد. پس اگر با کمی کلمات انگلیسی مطلب را بگویم، شما متود X را Call میکنید و متود X در زمان مناسب(بعد از تمام شدن خواندن اطلاعات) متود شما را Call Back میکند. با این تفاسیر CallBack هر چند شبیه event و delegate است و ممکن است توسط event و یا delegate پیاده سازی شده باشد، اما دارای این تفاوت جزئی است که event در پی رخدادهای مشخصی صدا زده خواهد شد اما call back زمانی صدا خواهد شد که شما متودی را call کرده اید و در پاسخ متود call back صدا زده خواهد شد.

همچنین در اینباره، اصطلاح کمتر مصطلح fallback است که مربوط به زمانی است که شما متودی را call کرده اید و اگر هنگام اجرای آن متود مشکلی رخ دهد متود fallback شما صدا زده خواهد شد.


معمولاً متودهایی که تابعی را به عنوان callback در ورودی میگیرند عملیات خود را به صورت async انجام میدهند. البته ضرورتی ندارد که این متودها async باشند.

hakim22
یک شنبه 17 دی 1391, 20:15 عصر
وقتی رویدادی به پایان میرسد ، خبر آن از طریق CallBack به سیستم عامل و سپس به شما گزارش میشود.
در دات نت معمولا این اخبار را با کمک event ها بدست می آوریم .
در حقیقت CallBack مقدار بازگشتی یک Delegate است و همه ی رویدادها هم Delegate محسوب می شوند.

Delegate می تواند یک متد یا تابع را درون خود ذخیره کند. مانند هر متغیرهای معمولی که می توانند اعداد یا نوشته ها را درون خود ذخیره کنند.
متغیرها مثلا از نوع int می تواند اعداد صحیح را در خود ذخیره کند.
یک Delegate هم می تواند توابع با تعداد پارامترها و مقادیر ورودی و خروجی گوناگون را در خود ذخیره کند و بعد هر وقت لازم شد می توانید از Delegate بخواهید متدی درون خود را اجرا کند (لازم نیست بدانید چه متدی درون Delegate ذخیره شده است !)

وقتی Delegate متد ذخیره شده درون خودش را اجرا می کند پایان اجرا را با استفاده از CallBack به سیستم عامل و سپس به شما گزارش می کند.
در حقیقت event ها شکل ساده شده ی این فرآیند هستند.

FingerPrint
جمعه 07 تیر 1392, 10:36 صبح
میشه محبت کنید از کاریرد CallBack در تکنولوژی ASP.NET :

1) یک توضیح مختصر
2) و یک مثالی بزنید؟

سپاس فراوان