تور لحظه آخری
امروز : سه شنبه ، 6 آذر 1403    احادیث و روایات:  پیامبر اکرم (ص):زِنا، شش پيامد دارد: سه در دنيا و سه در آخرت. سه پيامد دنيايى‏اش اين است كه: ...
سرگرمی سبک زندگی سینما و تلویزیون فرهنگ و هنر پزشکی و سلامت اجتماع و خانواده تصویری دین و اندیشه ورزش اقتصادی سیاسی حوادث علم و فناوری سایتهای دانلود گوناگون شرکت ها

تبلیغات

تبلیغات متنی

صرافی ارکی چنج

صرافی rkchange

سایبان ماشین

دزدگیر منزل

تشریفات روناک

اجاره سند در شیراز

قیمت فنس

armanekasbokar

armanetejarat

صندوق تضمین

Future Innovate Tech

پی جو مشاغل برتر شیراز

لوله بازکنی تهران

آراد برندینگ

خرید یخچال خارجی

موسسه خیریه

واردات از چین

حمية السكري النوع الثاني

ناب مووی

دانلود فیلم

بانک کتاب

دریافت دیه موتورسیکلت از بیمه

طراحی سایت تهران سایت

irspeedy

درج اگهی ویژه

تعمیرات مک بوک

دانلود فیلم هندی

قیمت فرش

درب فریم لس

زانوبند زاپیامکس

روغن بهران بردبار ۳۲۰

قیمت سرور اچ پی

خرید بلیط هواپیما

بلیط اتوبوس پایانه

قیمت سرور dl380 g10

تعمیرات پکیج کرج

لیست قیمت گوشی شیائومی

خرید فالوور

بهترین وکیل کرج

بهترین وکیل تهران

خرید اکانت تریدینگ ویو

خرید از چین

خرید از چین

تجهیزات کافی شاپ

ویزای چک

محصولات فوراور

خرید سرور اچ پی ماهان شبکه

دوربین سیمکارتی چرخشی

همکاری آی نو و گزینه دو

کاشت ابرو طبیعی و‌ سریع

الک آزمایشگاهی

الک آزمایشگاهی

خرید سرور مجازی

قیمت بالابر هیدرولیکی

قیمت بالابر هیدرولیکی

قیمت بالابر هیدرولیکی

لوله و اتصالات آذین

قرص گلوریا

نمایندگی دوو در کرج

خرید نهال سیب

وکیل ایرانی در استانبول

وکیل ایرانی در استانبول

وکیل ایرانی در استانبول

رفع تاری و تشخیص پلاک

پرگابالین

 






آمار وبسایت

 تعداد کل بازدیدها : 1834496565




هواشناسی

نرخ طلا سکه و  ارز

قیمت خودرو

فال حافظ

تعبیر خواب

فال انبیاء

متن قرآن



اضافه به علاقمنديها ارسال اين مطلب به دوستان آرشيو تمام مطالب
archive  refresh

Close Source کردن DLL م + Cross Thread


واضح آرشیو وب فارسی:سایت ریسک: dogtag31-03-2009, 03:21 PMسلام علیکم. من هنوز رو همون namespace و کلاس های حودمم. (:46:) [نمیشه 1 تاپیک واسه همه ی سوالام داشته باشم؟] ولی 1 چیز عجیب دیدم! بعد از این که پروژه ام رو به صورت Class Library در آوردم، DLLش رو تو مراجع یه برنامه دیگه اضافه کردم. چون هنوز کامل نیست، یه جا اون DLL ه Exception داد و در کمال تعجب، تمام سورسم رو نشون داد :18::2: [شوخی » این بود که واسه PHP کار ها قیافه میومدید که ما سورس بسته ایم :دی] خب این رو چجوری مخفی کنم؟ (منظورم یه defuscate ساده نیست ها! کاملاً کامپایل شده و غیر قابل دید می خوام. مثل CPP) استاد H2 هم یه چیزی در مورد مخفی کردن namespace در حالت کامپال شده فرمودند. اون رو هم لطفاً توضیح دهید. ===== و حالا این Cross-Thread: من یه Thread ایجاد می کنم و اون یه سری کار هایی می کنه و بعد از به نتیجه رسیدن، یه Event رو صدا می زنه. آقای استفاده کننده هم رو Eventم یه کاری می کنه. ولی اون هم با کمال تعجب برام یه Exception داد که Cross-Thread تعطیل!!! :41: حالا من بیام به همه ی استفاده کننده ها بگم که یه » !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! اضافه کن؟!؟! ===== همین دیگه. کمک بفرمایید! :11: _H2_03-04-2009, 01:14 AMسلام چون هنوز کامل نیست، یه جا اون DLL ه Exception داد و در کمال تعجب، تمام سورسم رو نشون داد اگر کل سورس را در زمان دیباگ مشاهده کرده اید اصلاً نگران نباشید ! کدهای دات نت قابل Decompile است ولی این مشکل شما ربطی به آن ندارد. وقتی شما پروزه خود را در (مثلاً همان DLL) در حالت DEBUG کامپایل میکنید، فایل DLL نهایی بزرگتر میشود و شامل اطلاعات و منابع لازم برای اشکال یابی هم میشود ... و آدرس فایلهای سورس را هم شامل میشود، تا در زمان Debug برنامه VS بتواند پشتیبانیهای خاص و ویژه ای در جهت Debug راحت و ساده و سریعتر و پیشرفته تر را ارائه دهد. میتوانید تست کنید و بعد از کامپایل پوشه سورس اصلی را تغییر مکان دهید، خواهید دید در زمان Debug دیگر سورس نشان داده نمیشود... یعنی سورس از محل رایانه خودتان تامین میشود و در انتقال به رایانه های دیگر مشکلی ایجاد نمیشود. به معنای Debug دقت کنید ... اشکال یابی! در نهایت، شما باید پروژه نهایی را در حالت Release کامپایل کنید و نسخه Release (انتشار) نسخه بهینه و آماده انتشار عمومی و استفاده عملی در سایر برنامه ها است. ولی اون هم با کمال تعجب برام یه Exception داد که Cross-Thread تعطیل!!! شما باید دردسترسی به کنترلرها از ریسمان اصلی خودشان استفاده کنید. یکی از ساده و معمولترین روشها استفاده از متد Invoke از کلاس پایه Control است. مثلاً اگر متد NewMethod را از هر ریسمانی فراخوانی کنید، فرقی ندارد و در پخش Any code شما میتوانید با اطمینان متدهای دیگر را اجرا کنید و به controlvariant و تمام کنترلرهای مشابه ان که از یک ریسمان تولید شده اند، دسترسی کامل داشته باشید. !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! موفق باشید. dogtag03-04-2009, 01:56 AMممنون. ولی این بخش دوم خیلی گویا نبود. میشه example-oriented عمل کنید؟ مرسی dogtag03-04-2009, 03:20 PM2 تا سوال دیگه هم پیش اومده که بذارید بپرسم. 1- من وقتی یه متغیر رو مثلاً []String تعریف می کنم، اصولی ترین راه از بین بردنش چیه؟ وقتی کارم باهاش تموم شد، مساری null بکنم؟ یا روش بهتری هم هست؟ ----- 2- من به []Byte دارم که طولانیه و 2 - 3 بار توش این نوشته شده "salam" (الیته توجه دارید که، هر حرف در یک درایه اش) من این رو چجوری می تونم splitش کنم؟ که به 3 - 4 قسمت تقسیم سه و اون salam بشه delimiterش؟ راه تعریف شده داره؟ یا باید خودم بنویسم؟ راستی، اگر برای Generic List از نوع byte هم بشه، باز هم خوبه. مرسی dogtag03-04-2009, 10:01 PMبرای راه دوم، این رو نوشتم: !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! البته به نظرم اصلاً بهینه نیستو چون رو هوا نوشتم، اون حلقه رو مطمئن نیستم. -- راستی، در کل استفاده از Generic List روش خوبیه؟ آخه در این رابطه نبما می گفت dataset عالیه ولی استاد h2 می گه بد ترین راهه! پدر رم و سی پی یو رو در میاره! منتظرم M E H D I04-04-2009, 01:31 AM2 تا سوال دیگه هم پیش اومده که بذارید بپرسم. 1- من وقتی یه متغیر رو مثلاً []String تعریف می کنم، اصولی ترین راه از بین بردنش چیه؟ وقتی کارم باهاش تموم شد، مساری null بکنم؟ یا روش بهتری هم هست؟ خوب یه روش همین هست که null کنین تا GC بیاد پاک کنه. توی این حالت با دو بار عبور کردن GC پاک میشه. اگه null نکنین هم خود به خود وقتی می بینه استفاده نمی کنین پاکش می کنه اما توی سیکلهای بیشتری. روش دیگه هم overload کردن متد finalize هست که خود MSDN گفته که بهتره از این روش استفاده نکنین اگه خیلی ضروری نیست چون دیرتر از حافظه پاک میشه. متد finalize خود به خود هیچ کاری انجام نمیده در واقع! 2- من به []Byte دارم که طولانیه و 2 - 3 بار توش این نوشته شده "salam" (الیته توجه دارید که، هر حرف در یک درایه اش) من این رو چجوری می تونم splitش کنم؟ که به 3 - 4 قسمت تقسیم سه و اون salam بشه delimiterش؟ راه تعریف شده داره؟ یا باید خودم بنویسم؟ کلاس String یه متد Split داره که 6 تا هم overload داره این تابع. می تونین به شکلهای مختلف رشته رو split کنین. حتی می تونین چند تا رشته رو به عنوان delimiter براش معرفی کنین که توی این حالت باید از این overload استفاده کنین. !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! seperator یک آرایه رشته ای هست و option یک متغیر از نوع StringSplitOptions که می تونه دو نوع None و RemoveEmptyEntries که فکر نکنم نیاز به توضیح داشته باشن اینها. overload های دیگه ش رو هم می تونین توی msdn ببینین. تقریبا شبیه همین هستن. dogtag04-04-2009, 01:42 AMبرای اولی مرسی. ولی به دومی توجه نکردید. من نگفتم string گفتم []Byte _H2_04-04-2009, 02:09 AMسلام من برای سوالات دوستمف یکسری جواب داشتم تایپ میکردم، و حالا که امدن بفرستم، دیم کاربر mehdi لطف کردند و جوابی داده اند .... خلاصه دیگر حال ویرایش مجدد ندارم :11: ! متن زیر را میفرستم، با این توجه که در زمان تایپ پست mehdi را ندیده بودم. ============== ولی این بخش دوم خیلی گویا نبود. میشه example-oriented عمل کنید؟ خیلی واضح که بود ! ! ! ! ! یکم مثال بهتری میزنم، مثلاً به کد زیر دقت کنید... !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! شما میخواهید NewMethod 2 را اجرا کنید، اگر NewMethod 2 را از ریسمان های غیر مجاز اجرا کنید با خطای Cross مواجه میشود، ولی اگر NewMethod را از هر ریسمانی اجرا کنید، فرقی ندارد و بدون مشکل همان دستورات NewMethod 2 در نهایت اجرا خواهد شد. یادآوری میکنم که m_controlvariant میتوانید هر کنترلری از ریسمان مورد نظر باشد، حتی از یک فرم دیگر و یا خود یک فرم و... این الگوریتم را باید درک کنید و با تغییرات لازم استفاده کنید. ============== 1- من وقتی یه متغیر رو مثلاً []String تعریف می کنم، اصولی ترین راه از بین بردنش چیه؟ وقتی کارم باهاش تموم شد، مساری null بکنم؟ یا روش بهتری هم هست؟ از شنیدن برخی دستورات و دقتی که فرد پرسنده دارد، آدم خوشحال میشود و این از همان موارد است ! اصولاً نیاز به اجرای دستور خاصی نیست و همان null کافی است، ضمن اینکه null هم در زمانی که خروج از حوزه دید رخ میدهد خودکار انجام میشود و مهم نیست. مثلاً این null کردن بیهوده است و معنی ندارد ! طبیعتاً با رسیدن به انتهای T1 متغییرها از حوزه کاری خارج میشوند و به نوعی خودکار مرجعشان نابود و از مراجع شی کسر میشود (مشابه همان عمل null) !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! در واقع وقتی هیچ متغییری در برنامه وجود نداشته باشد که به محل یک شی کلاس در RAM اشاره کند و از آن استفاده کند، جمع آورنده حافظه هرز آن شی را تحویل میگیرد و آزاد میکند. البته اگر حافظه مورد نظر زیاد است و اصرار هم دارید که زودتر آزاد شود (دیگر خیلی وسواس هستید !) میتوانید متد System.GC.SuppressFinalize را هم اجرا کنید. !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! ولی در کل نیازی به این کارها نیست و در مورد اشایی که واسط IDisposable را ندارد، مسئولی برای نابود سازی بر عهده شما نیست و میتوانید به garbage اعتماد کنید. ============== من به []Byte دارم که طولانیه و 2 - 3 بار توش این نوشته شده "salam" (الیته توجه دارید که، هر حرف در یک درایه اش) من این رو چجوری می تونم splitش کنم؟ که به 3 - 4 قسمت تقسیم سه و اون salam بشه delimiterش؟ راه تعریف شده داره؟ من دستور و متد آماده ای برای این کار نمیشناسم. اگر واقعاً محتویات آرایه []byte شما متنی است پیشنهاد میکنم تجدید نظری کنید. دیگر Ascii فرمت چندان رایجی نیست و فرمت های Unicode و مخصوصاً UTF8 رایجتر است... دات نت حدود 6 فرمت مختلف را با کمک کلاس System.Text.Encoding پشتیبانی میکند. این فرمتها دیگر سادگی آن یک به یکی Ascii را شاید نداشته باشند و بهتر است تبدیلات []byte به/از []char و string را به عهده دات نت بگذارید. نگه داری اطلاعات به صورت []char و string ضمن پشتیبانی کامل Unicode و تمام فرهنگ ها و متون به شما این امکانات را میدهد تا از توابع رشته ای دات نت در خصوص کار پردازش متنی خود کمک بگیرید. مثلاً کلاس string چندین متد آماده Split دارد. و در واقع کلاس string معادل []char است. در کل بهتر است از ساختارهای string و []char و System.Text.StringBuilder و System.Text.Encoding برای پردازش متن استفاده کنید. ============== اگر برای Generic List از نوع byte هم بشه، باز هم خوبه راستی، در کل استفاده از Generic List روش خوبیه؟ مشکل خاصی ندارد ! البته باید بدانید که کلاسی مثل System.Collections.Generic.List چیبز خاص و خارق العاده و استثنایی ندارد. کد خود این کلاسها با خود دات نت و همین کلمات کلیدی و امکانات نوشته شده ... همین کلاس در واقع ... - اطلاعات را در یک آرایه معمولی نگه میدارد. - یک آرایه که معمولاً کمی بزرگتر است و در انتهایش عناصر خالی ای برای Add و Insert های بعدی دارد. - اگر طی عمل Insert و Add آرایه گنجایش کافی و جای خالی بیشتری نداشته باشد، کلاس آرایه ای جدید با ابعاد دو برابر میسازد و عناصر آرایه قبلی را در آرایه جدید بزرگتر با جای خالی بیشتر کپی میکند و آرایه قبلی را رها میکند. - اگر عمل Add باشد، عنصر جدید به اولین جای خالی آرایه در انتهای آن اضافه میشود. - اگر عمل Insert در وسط آرایه باشد، عناصر آرایه از آن محل یک واحد به سمت آخر حرکت داده میشوند تا جایی خالی در وسط ایجاد شود. - اگر عمل Delete باشد، در واقع عناصر از اخر به محل مورد یک واحد حرکت داده میشوند تا نقطه مورد نظر را پر کنند. خلاصه این مکانیزم کار کلاس فوق بود، حالا میتوانید راجب استفاده ان تصمیم بگیرید. طبیعتاً ... - سرعت خیلی کمتری از آرایه مستقیم دارد - سرعت Add خوبی دارد، مخصوصاً که capacity زیادی داشته باشد. - سرعت Insert و Delete کم است و نیازمند حرکت عناصر است. البته الگوریتم و روش فوق در خصوص اغلب collection ها صادق است (بجز نوع Linked که الگوریتم دیگری دارند.) و البته از بین Collection های دات نت System.Collections.Generic.List یکی از بهترین و پراستفاده ترین آنها است. که کد نهایی شما فقط و فقط یک لایه با منبع پایه ای اصلی ذخیره اطلاعات در RAM (که همان آرایه باشد) فاصله پیدا میکند. و همانطور که آرایه پایه نگه داری اطلاعات در System.Collections.Generic.List و System.Collections.List است. پایه نگه داری اطلاعات در خیلی از کلاسهای سطح بالاتر دات نت همین دو کلاس فوق است. (مثلاً وقتی نام فایلها یک پوشه را با GetFiles میگیرد، کدهای داخلی برای ذخیره موقت نام ها و اسکن (پیمایش) تمام نامها تا انتها از System.Collections.Generic.List استفاده میکنند و...) دیگر تصمیم استفاده با در نظر گرفتن شرایط خودتان و شرایط کلاس فوق به عهده خودتان است. ! dogtag04-04-2009, 02:22 AMقربان شما. مستفیض شدیم. (اگر املاش غلط نباشه!) -- اون پست 5 ه، مشکل نداره؟ (من سرم درد می گیره وقتی نگاهش می کنم :دی) _H2_04-04-2009, 02:23 AMسلام برای راه دوم، این رو نوشتممن برخی اوقات ادم تنبلی میشوم ! ترجیح میدهم یک کد مطمئن را خودم بنویسم و خیالم راحت باشد ! البته شاید اگر کس دیگری بود چندان حال نوشتن نداشتم ولی ... خلاصه من کدی شبیه این را پیشنهاد میکنم که البته خیلی سریع نوشتم ولی گمانم بد نباشد و دقیق عمل کند. !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! - متد Clone یک کپی جدید تهیه میکند و نتیجتاً تضمین میکند که عناصر مقدار بازگشتی خروجی به یک محل مشترک اشاره نمیکنند و با تغییر فلان عنصر، عنصری در جای دیگر تغییر نمیکند... امنیدوارم متوجه شده باشید. - کد فوق آرایه هایی تولید میکند که جمع هعمه انها به اندازه بافر اولیه ورودی خواهد بود. در صورت امکان و اگر کدتان اجازه میدهد، پیشنهاد میکنم که به جای [][]byte که فرآیندی پرهزینه میطلبد، یک []int بازگردانید که شامل ایندکس نقاط شکست باشد... طبیعتاً با این کار از تخصیص و مصرف بیشتر RAM در سایزهای زیاد بافر پیشگیری میشود و فقط یک لیست کوچک تر ایندکسی تولید میشود که استفاده از ان هم چندان مشکل نیست... البته باید شرایط سایز بافر ورودی و قطعات separator را هم در نظر بگیرید، چون احتمال دارد در شرایط خاص این آرایه ایندکسی بزرگتر از [][]byte شود !!! - گمانم کد فوق مشکلی ندارد ولی باید در شرایط و ورودی های مختلف، خودتان تستش کنید. (من تست نکردم) موفق باشید. dogtag04-04-2009, 03:02 AMمرسی استاد. ولی اون deleteseparator اگر true باشد، باید اون آقای separator باید به ابتدای آرایه ی بعدی اضافه شود. اگر میشه دوباره بنویسید. {شرمنده} + مرسی _H2_04-04-2009, 03:18 AMسلام مجدد ! اگر برای Generic List از نوع byte هم بشه، باز هم خوبه ساعت 3 نصقه شب چیزی یادم امد که حیفم امد نگویم ! در مورد byte اگر قصد دارید، فقط مجموعه ای با متد Add داشته باشید ... یعنی یکسری بایت را به انتهای بافری اضافه کنید، احتمالاً بهترین گزینه System.IO.MemoryStream خواهد بود. موفق باشید و شب خوش ! _H2_04-04-2009, 03:22 AMسلام ولی اون deleteseparator اگر true باشد، باید اون آقای separator باید به ابتدای آرایه ی بعدی اضافه شود. درست متوجه نشدم؟! یکم مشکوک است ! یعنی میخواستید separator مجزا در خروجی نیاید؟ dogtag04-04-2009, 03:22 AMشب شما به خیر. نکته جالبی بود. -- آخرین سوال امشب » می خوام به یه سایتی، یه چیزی رو بفرستم و نتیجه رو نشون بدم. کدام را توصیه می کنید؟ HttpWebRequest یا WebClient؟ چرا؟ مرسی dogtag04-04-2009, 03:24 AMدرست متوجه نشدم؟! یکم مشکوک است ! یعنی میخواستید separator مجزا در خروجی نیاید؟ بله! :46: --------- Amin eHelp04-04-2009, 12:14 PMشب شما به خیر. نکته جالبی بود. -- آخرین سوال امشب » می خوام به یه سایتی، یه چیزی رو بفرستم و نتیجه رو نشون بدم. کدام را توصیه می کنید؟ HttpWebRequest یا WebClient؟ چرا؟ مرسی سلام. من جرات نمی کنم جلوی استادان عزیزی همچون _H2_ حرفی بزنم، ولی از اونجایی که تجربه ای اندک توی این زمینه دارم، گفتم یه چیزی بپرونیم:31: -------------------- به نظر من بهتره که از HttpWebRequest استفاده کنی، چون همونطور که از سوالت مشخصه می خوای یه درخواستی رو بفرستی و نتیجه رو نشون بدی، خب WebClient نمی تونه اینجا کمکت کنه چون اون فقط می تونه اطلاعات رو دانلود و به نمایش بزاره و عملا هیچ کنترلی رو درخواستت نداری، ولی در WebRequest بهتر می تونی درخواستهات رو کنترل کنی و تقریبا هر درخواستی رو می تونی از طریقش بفرستی و نتیجه رو به نمایش بزاری. _H2_05-04-2009, 11:06 AMسلام HttpWebRequest یا WebClient؟ همانطور که دوستم جناب Amin eHelp گفتند، WebRequest یک لایه پایین تر قرار دارد و گزینه های بیشتری را در اختیار شما قرار میدهد شاید نیاز به sample نداشته باشید ولی به عنوان نمونه میتوانید به تاپیک زیر مراجعه کنید: forum.p30world.com/showthread.php?t=259640 پست 4 و 8 ولی اون deleteseparator اگر true باشد، باید اون آقای separator باید به ابتدای آرایه ی بعدی اضافه شود. خوب چیز ساده ای و شاید خودتان هم تا حالا حلش کرده باشید، پیشنهاد میکنم روی همان کد قبلی سعی کنید، خودتان تغییراتی اعمال کنید، خیلی ساده است، سعی کنید، اگر نشد، در خدمت هستم. (با چند تغییر در متغییرهای int همانطور میشود که خواسته اید !) جمیعاً موفق و پیروز باشید. سایت ما را در گوگل محبوب کنید با کلیک روی دکمه ای که در سمت چپ این منو با عنوان +1 قرار داده شده شما به این سایت مهر تأیید میزنید و به دوستانتان در صفحه جستجوی گوگل دیدن این سایت را پیشنهاد میکنید که این امر خود باعث افزایش رتبه سایت در گوگل میشود




این صفحه را در گوگل محبوب کنید

[ارسال شده از: سایت ریسک]
[مشاهده در: www.ri3k.eu]
[تعداد بازديد از اين مطلب: 496]

bt

اضافه شدن مطلب/حذف مطلب




-


گوناگون

پربازدیدترینها
طراحی وب>


صفحه اول | تمام مطالب | RSS | ارتباط با ما
1390© تمامی حقوق این سایت متعلق به سایت واضح می باشد.
این سایت در ستاد ساماندهی وزارت فرهنگ و ارشاد اسلامی ثبت شده است و پیرو قوانین جمهوری اسلامی ایران می باشد. لطفا در صورت برخورد با مطالب و صفحات خلاف قوانین در سایت آن را به ما اطلاع دهید
پایگاه خبری واضح کاری از شرکت طراحی سایت اینتن