تبلیغات :
ماهان سرور
آکوستیک ، فوم شانه تخم مرغی ، پنل صداگیر ، یونولیت
فروش آنلاین لباس کودک
خرید فالوور ایرانی
خرید فالوور اینستاگرام
خرید ممبر تلگرام

[ + افزودن آگهی متنی جدید ]




صفحه 2 از 2 اولاول 12
نمايش نتايج 11 به 16 از 16

نام تاپيک: سوال : targetInvocationException

  1. #11
    ناظر انجمن .NET Framework _H2_'s Avatar
    تاريخ عضويت
    Feb 2007
    محل سكونت
    یک جایی بین Framework و نارمک!
    پست ها
    4,746

    پيش فرض

    سلام
    من خودم شروع به یا گیری کردم
    ما همه و همه روزه در حال یادگیری هستیم ...
    نمیدانم تا کجا پیش رفته اید و تاکید میکنم حتماً همه کلمات کلیدی زبان کاری تان + مفاهیم و پیاده سازی شی گرایی و وراثت و پلی مورفیزم را یاد بگیرد.
    بدون دانستن مطالب فوق الذکر دانش برنامه نویسی هر کسی خیلی ناقص خواهد بود.

    کد برام سنگین بود و بعضی قسمت های کدو نفهمیدم
    !!! من فقط کدهای خودتان را defragment کردم !!!
    کمی جای قطعات کدهای خودتان را جابجا کردم، تقریباً کدی اضافه نکردم.
    این برنامه من نیست، این برنامه خودتان است که defragment شده.

    فقط بگید تاپیک جدید بزنم تا جستجو برای بقیه آسون باشه
    نمیدانم!
    اگر فکر میکنید سوالتان نسبت به تاپیک فعلی خیلی بی ربط است(!) در تاپیک مجزا مطرح کنید.
    ولی اگر فکر میکنید سوالتان در راستای همین مباحث چندریسمانی است که در تاپیک صحبت شده، خوب همینجا مطرح کنید تا کنار هم باشند
    !!!!!

    =====

    تلاشتان را بیشتر کنید، باید روی کدتان کار کنید، کارتان شروع شده، مطمئن باشید کدتان جای کار زیاد دارد و فقط مشکل چندریسمانی حل شده.
    موفق باشید.

  2. این کاربر از _H2_ بخاطر این مطلب مفید تشکر کرده است


  3. #12
    اگه نباشه جاش خالی می مونه without_all's Avatar
    تاريخ عضويت
    Jun 2007
    پست ها
    315

    پيش فرض سلام

    سلام

    پلی مورفیزم را یاد بگیرد
    - اینو نمیدونم چیه ؟

    !!! من فقط کدهای خودتان را defragment کردم !!!
    - حق با شما بود من تنبلی کرده بودم :43:


    سوالاتم :

    1- این کدو اگه میشه یه توضیح :

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    مخصوصا قسمت قرمز رنگ .

    2- و این کد رو هم :

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    3- چرا در بیشتر جاها از This استفاده میکنید دلیل خاصی داره ؟

    4- این دوتا چه کاربردی دارن :

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


    ممنون ( زیاد خیلی زیاد )

    با تشکر
    Woeful

  4. #13
    ناظر انجمن .NET Framework _H2_'s Avatar
    تاريخ عضويت
    Feb 2007
    محل سكونت
    یک جایی بین Framework و نارمک!
    پست ها
    4,746

    پيش فرض

    سلام
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    Polymorphism یا همان چندریختگی اجازه میدهد کلاسهایی از شاخه های وراثتی مختلف الگو و پیاده سازی یکسانی را شامل شوند.
    مثلاً
    جانداران->حیوانات->خرگوش!
    جانداران->گیاهان->گل لاله!
    بی جان->ابزار (ساخته بشر)->وسایل نقلیه->خودرو->پیکان!

    کلاس "پیکان" از یک شاخه وراثتی مختلف است و نمیتواند رابطه وراثتی مستقیمی با کلاس "خرگوش" و ربطی به هم ندارند.
    از دو شاخه درخت متفاوت منشاء شده اند ولی با این وجود هر دو متد "حرکت" دارند!!!
    اینجاست که وراثت اجازه پیاده سازی این امکانات مشابه از شاخه های وراثتی مختلف را نمیدهد. (مخصوصاً در دات نت که هر کلاس فقط و فقط میتواند و باید از یک کلاس وراثت بگیرد)

    در اینجا پلیمورفیزم این شاخه های مختلف را به هم وصل میکند.
    در دات نت با کلمه Interface میتوان یک رابط را تعریف کرد.
    و در #C با علامت ":" و "," میتوان واسط در کلاس پیاده سازی کرد.
    و در VB با کلمه Implements میتوان واسط را در کلاس پیاده سازی کرد.

    1- این کدو اگه میشه یه توضیح :
    System.Collections.Generic.IList
    IList واسط همگانی یک فهرست اشیا است. (همان Polymorphism !)
    در متد دومتان به جای انکه یک List بگیریم یک IList گرفتیم! چرا؟
    برای ایزوله تر شدن دو متد، به این معنی که اگر تابعی که این تابع را صدا میزد هر نوع لیستی درون خودش تعریف کرده باشد و یا بعداً نوع ان را تغییر دهد باز هم متد دوم میتواند صحیح کار کند و نیاز به تغییر ندارد.
    متد دوم نیاز ندارد بداند که متد اول دقیقاً چه نوع فهرستی را در خودش new و پر کرده.

    مثلاً کلاس System.Collections.Generic.List واسط IList را دارد!
    کلاس System.Collections.ObjectModel.Collection هم واسط IList را دارد!
    و همینطور کلاسهای System.Windows.FreezableCollection و System.Collections.ObjectModel.ReadOnlyCollection و System.Collections.Generic.SynchronizedReadOnlyCol lection و... واسط IList را دارند.

    و متد دوم ما میتواند با هر یک از کلاسهای فوق صحیح کار کند!
    یعنی اگر نوع کلاس در متد بالاسری تغییر کند تا زمانی که کلاس واسط مورد نیاز را داشته باشد متد دوم نیاز به تغییر ندارد و کد مستحکم تر میماند و با یک تغییر کوچک کمتر نیاز میشود جاهای دیگر هم تغییر کنند.

    (((
    گرچه در کد فوق واسط پایه ای تر System.Collections.Generic.ICollection و یا حتی واسط System.Collections.Generic.IEnumerable هم برای foreach کافی بود!
    اگر خودم بودم احتمالاً با یک از این دو کد را مینوشتم!
    )))

    این از جمله همان کاربردها و مفاهیم چندریختگی یا پلیمورفیزم است که اشیای مختلف را در یک متغییر یکسان جای میدهد.

    2- و این کد رو هم :
    InvokeRequired, Invoke
    اینها را که در پست 8 تاپیک خودتان توضیح دادم!!!
    دقیقاً نصف پست 8 به توضیح این مطلب اختصاص یافته!
    [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]

    3- چرا در بیشتر جاها از This استفاده میکنید دلیل خاصی داره ؟
    کلمه this حاوی اشاره گر کلاس جاری است.
    وقتی شما متغیر یا متدی یک نمونه کلاس را میخواهید فراخوانی کنید مینویسید classvariantname.Method
    در یک یک کلاس بخواهید متغیر و متد و اعضای همان کلاس را فراخوانی کنید در واقع دارید اعضای this را فراخوانی میکنید.
    البته نوشتن this اختیاری است چون در واقع پیش فرض است.

    بحث طولانی میشود ...
    نوشتن یا ننوشتن this اختیاری است ولی من با نوشتن this احساس وفاداری بیشتری به شی گرایی پیدا میکنم!

    private delegate void AddListViewItemDelegate(string text, string description);
    private delegate void OneTextDelegate(string value);
    delegate ها میتوانند اشاره گر (چیزی شبیه Shortcut ویندوز!) یک تابع را در خود جای دهند.
    در واقع ما اشاره گر متدی را که میخواهیم ریسمان اصلی (هر وقت داشت) اجرایش کند با delegate مناسب بسته بندی میکنیم و به صف کارهای ریسمان اصلی اضافه میکنیم.
    بحرحال ریسمان باید بداند چه متدی (و با چه پارامترهایی) را ما میخواهیم اجرا کند؟؟!!
    و این Shortcut همان متد است.

    توضیح بیشتر و تاپیک مرتبط:
    [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]

    موفق باشید.

  5. این کاربر از _H2_ بخاطر این مطلب مفید تشکر کرده است


  6. #14
    اگه نباشه جاش خالی می مونه without_all's Avatar
    تاريخ عضويت
    Jun 2007
    پست ها
    315

    14 سلام

    اینها را که در پست 8 تاپیک خودتان توضیح دادم!!!
    دقیقاً نصف پست 8 به توضیح این مطلب اختصاص یافته!
    درسته ولی من متوجه نشدم احتمالا به خاطر اینکه با delegate همراه شده
    من در کتاب آموزش #C دنبال delegate گشتم و دیدم در عمق فصلهای شئ گرایی قرار داره ( همون فصلهایی که همیشه ازشون فرار میکردم ) فک میکنم دیگه باید باهاشون روبه روشم شما ببینید این چیزی که من فهمیدم درستته یا اشتباه ؟

    در توضیح این کد :
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    if چک میکنه اگه ریسمان اصلی ما فعلا کار داره یه درخواست(required) برای مراجعه به این قسمت در لیست کارهایی که ریسمان اصلی در موقع بی کاری قراره انجام بده قرار میده

    همین جا یه سوال :

    آیا اینجا یعنی ریسمان جدید متوقف میشه تا ریسمان اصلی به اینجا مراجعه کنه و بعد از انجام کار ریسمان اصلی ، دوباره ریسمان جدید کارش رو شروع میکنه ؟

    ادامه :
    خب فرض میکنیم ریسمان اصلی ما الان بیکار شده و اومده invoke چیکار میکنه؟ ( مخصوصا پارامتر هاشو من درک نمیکنم) دوباره خود AddFoundSite رو احظار میکنه ؟ یعنی یه حلقه میشه ؟

    یا اگه از یه جنبه دیگه بهش نگاه کنیم :

    if چک میکنه اگه ریسمان اصلی ما فعلا کار داره یه درخواست(required) برای مراجعه به این قسمت در لیست کارهایی که ریسمان اصلی در موقع بی کاری قراره انجام بده قرار میده

    خب ریسمان اصلی الان بی کار شده اومده به جایی که ما درخواست کرده بودیم
    ریسمان اصلی دوباره تابع AddFoundSite احظار میکنه و چون سرش سلوغ نیست این کد رو اجرا میکنه :
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    و این نمیتونه مثل یه تابع بازگشتی باشه و نباید ما کد رو به این صورت اصلاح کنیم :
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    من کد شما رو اجرا کردم میدونم درست کار میکنه ولی این سولا برای من پیش اومده و کاملا کیچ شدم


    در ضمن اگه این سولایی که من کردم به شئ گرایی ربطی داره جواب ندید من میرم فصلای شئ گرایی
    رو از اول مخونم


    میبخشید اگه من یه کم پا پیچ شدم


    با تشکر
    Woeful

  7. #15
    ناظر انجمن .NET Framework _H2_'s Avatar
    تاريخ عضويت
    Feb 2007
    محل سكونت
    یک جایی بین Framework و نارمک!
    پست ها
    4,746

    پيش فرض

    یلام
    نقل قول نوشته شده توسط without_all
    ... چک میکنه اگه ریسمان اصلی ما فعلا کار داره ...
    من همچین چیزی نگفتم!
    یاداوری ...
    نقل قول نوشته شده توسط _H2_
    کد فوق اول با if ریسمانی که دستورات را اجرا میکند چک میکند.
    اگر ریسمان اصلی نباشد شرط برقرار میشود و پیغامی برای ریسمان اصلی گذاشته میشود تا هر وقت فرصت داشت یکبار همین متد (TextReport) با پارامترهالیی که حالا دارد (text) اجرا کند

    آیا اینجا یعنی ریسمان جدید متوقف میشه تا ریسمان اصلی به اینجا مراجعه کنه و بعد از انجام کار ریسمان اصلی ، دوباره ریسمان جدید کارش رو شروع میکنه ؟
    همانطور که اشاره ای کردم ...
    نقل قول نوشته شده توسط _H2_
    این کار مثل ان میماند که در اداره ای، کاغذ و پرونده ای را برای پیگیری روی میز یک کارمند قرار دهید تا هر وقت کار نداشت و نوبت این پرونده رسید، این را هم بررسی کند و کارش را انجام دهد.
    و خودتان بگذارید و بروید به کارتان برسید
    برای سایر ریسمان ها if برقرار میشود و با ان متد خاص BeginInvoke فقط اجرای این تابع(AddFoundSite) به عنوان یک پیغام به صف کارهای ریسمان اصلی اضافه میشود.
    سپس ریسمان فعلی یا همان جدید این پیغام را POST میکند و میرود خط بعد را که return است اجرا میکند و بعد هم سایر دستوراتی که در روال بالاسری باید اجرا میشدند.

    مثل نامه معمولی که پستچی داخل خانه می اندازد و فوراً میرود.

    ریسمان اصلی هم چون کار خاصی ندارد و مدام صف پیغام ها را چک میکند در کسری از ثانیه پیام را پردازش و خودش مجزا این متد AddFoundSite را با پارامترهایی که در نامه(!) بوده اجرا میکند.

    خب فرض میکنیم ریسمان اصلی ما الان بیکار شده و اومده BeginInvoke چیکار میکنه؟ ( مخصوصا پارامتر هاشو من درک نمیکنم) دوباره خود AddFoundSite رو احظار میکنه ؟ یعنی یه حلقه میشه ؟
    اگر ریسمان اصلی برنامه باشد، اصلاً هیچگاه if برقرار نمیشود و اصلاً ریسمان اصلی هیچگاه BeginInvoke را اجرا نمیکند.
    اصلاً آن if برای فرق گذاشتن بین اجرای دستورات توسط ریسمان اصلی و سایرین بوده
    اگر ان if نبود یک حلقه بینهایت میشد.

    if چک میکنه اگه ریسمان اصلی ما فعلا کار داره یه درخواست(required) برای مراجعه به این قسمت
    مجدد تاکید میکنم، مطلب فوق مشکل دارد.
    InvokeRequired و BeginInvoke کاری که شلوغی و خلوتی و... ندارند! نان وایی که نیست !

    if-InvokeRequired ریسمان اصلی را از سایر ریسمانها تشخیص میدهد، همین و تمام!
    BeginInvoke هم با هیچ چیز کاری ندارد یک پیغام برای اجرای Shortcut یک متد به انتهای صف کارهای ریسمان اصلی اضافه میکند. همین و تمام!



    نباید ما کد رو به این صورت اصلاح کنیم
    public void AddFoundSite(string site)
    {
    if (this.InvokeRequired)
    {
    this.Invoke(new OneTextDelegate(this.AddFoundSite), site);
    return;
    }
    else
    {
    this.txtFoundSite.Text += site + "\r\n";
    }
    }
    بله، این کد هم صحیح است، البته اگر else اضافه شود دیگر نیازی به return نیست.
    در واقع return کد من و else کد شما یک عمل را انجام میدهند و وجود یکی از انها کافی است.
    else را که میدانید چه میکند؟
    return هم هر کجا اجرا شود، پایان اجرای دستورات تابع است و خط بعدی return دیگر اجرا نمیشود.
    و در این کد نتیجه یکساینی با else میدهد.
    اگر سایر ریسمان کد را اجرا کنند وارد if میشود و کارشان با return (در این محل) تمام میشود
    اگر هم ریسمان اصلی اجرا کند که وارد if نمیشود و دستورات پس از ان را اجرا میکند.

    کد داخل if همین و ثابت است ولی کد else میتواند بیشتر هم شود ... (مثل آن ListView) میتوان رنگ و فونت و متن و... چندین کنترلر را دستکاری کرد.
    در اینجا مزیت کوچک return ان است که اصتلاحاً کدتان زیاد کوهان شتری و تودرتو نمیشود و کد زیبا تر و قابل فهم تری خواهید داشت.

    در ضمن اگه این سولایی که من کردم به شئ گرایی ربطی داره ...
    چندان ارتباطی ندارد ...
    ( البته تفاوت this و base در #C و یا Me و MyBase و MyClass در VB جزء مباحث جالب شی گرایی است و یا همان IList هم ... )

    موفق باشید.
    Last edited by _H2_; 14-03-2010 at 19:24. دليل: begininvoke

  8. این کاربر از _H2_ بخاطر این مطلب مفید تشکر کرده است


  9. #16
    اگه نباشه جاش خالی می مونه without_all's Avatar
    تاريخ عضويت
    Jun 2007
    پست ها
    315

    12 سلام

    آقا آخرش فهمیدم (گرفتم )
    کد رو از دوباره خودن نوشتم و تمام قسمتاشو فهمیدم .
    دست شما درد نکنه

    خیلی آقایی

    با تشکر
    Woeful

صفحه 2 از 2 اولاول 12

Thread Information

Users Browsing this Thread

هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)

User Tag List

برچسب های این موضوع

قوانين ايجاد تاپيک در انجمن

  • شما نمی توانید تاپیک ایحاد کنید
  • شما نمی توانید پاسخی ارسال کنید
  • شما نمی توانید فایل پیوست کنید
  • شما نمی توانید پاسخ خود را ویرایش کنید
  •