الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

أسئلة بدون اجابة

بدأه ghadeer-youseef في 15 سبتمبر 2014 · 7 رد · 1,055 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بسم الله الرحمن الرحيم :

 

السلام عليكم أنتم الجميع يكون بخير و سلامه :-)

 

عندي عدة أسئلة - أسئلة بشكل عام ولي عنده مرجع أو كتاب يتضمن اجابة على سؤالي أكود له من الشاكرين ...

 

أكيد الأسئلة ضمن لغة C Sharp.net

 

1- التحكم بالذكرة من خلال السي الشارب لأوضح السؤال تماماً  

عندي برنامج فيه عدة Class أو عدة Functionومكتبات  عند تطبق البرنامج بشتغل كل Class , fanction والمكتبات و بتشغل حيز من الذاكرة هل توجد امكانيه في السي شارب من انه يقوم الكلاس بوظيفته  أو الفنكش او المكتبه بوظيفته و ثم يمحي اثره في الذاكرة لحين استدعاء مرة ثانيه ... لي فهم عليي .. و بيعرف كيف بتمشي الامور بذاكرة المعالج بلغة السي الشارب بتمنى يشرحلي ... أو اذا في دوال بتحكم بالذاكرة :-)

 

2- في دوال بتشفر البرنامج يعني عملت برنامج مو منطقي عشر دقايق تاعون الهندسة العكسية بيحصلوا عليه :-) 

 

3- هاد السؤال شاغلي بالي :

 

نحن فرضاً بنستدعي فضاء معين :  use system.net.socket فرضاً ومنه بنستدعي الدالة الي بدنا نشتغل فيااا .. نحن فينا نبرمج مكتبه يعني هي تبع .dll :-)

 

4- threading  شى كتاب بيتحدث بشكل موسع عنه :-) 

 

5- وشكراً ............... بتمنى الاجابة :-) اخوكم في الله غدير 

#2

وعليكم السلام روحمة الله،،،

 

أخي الكريم، هناك الكثير والكثير من الأسئلة والتي لن تحصل على إجابة مقنعة لك، إلا بالتجريب بنفسك والوقوع بتلك المشاكل

لكن سأحاول الإجابة عن الأسئلة بشيء من الإختصار.

1. بالنسبة للسي شارب، فهي تدير الذاكرة تلقائياً عن طريق Garbage Collector (GC)، إي عند الإنتهاء من اوبجكت معين، يقوم GC بالمرور بحذفه (إلغاء المؤشر عليه)، طبعاً هذا بشكل عام، لكن هناك العديد من الحالات التي يجب أن تأخذها بعين الإعتبار، مثلاً الأحداث Events، تبقى دائما بالذاكرة، ولا يمكن فصلها إلا يدوياً كمثال، عند تفعيل حدث معين نكتب كالتالي:

panel1.MouseMove += MouseMoveEvent

يسمى هذا المؤشر او الرابط بالرابط القوي، لذلك يجب فصله عند الإنتهاء منه:

panel1.MouseMove -= MouseMoveEvent

وطبعا لا تنسى إنه يوجد IDisposable Interface، حيث يستفاذ منه لنفس الهدف.

والأهم، أن تأخذ القدر المناسب من البيانات في لحظة معينة، وليس كل البيانات.

 

2. بالنسبة للتشفير والهندسة العكسية، هذا موضوع طويل، لكن أنا متأكد يا صديقي ان نسخة Visual Studio التي تعمل عليها، هي نسخة مقرصنه أيضاً، لكن الأمر بالنهاية يعود لحقوق الملكية، وتأكد أن سوق العمل الواقعي كشركات ومستهلكين في الغالب، لا يستخدمون إلا النسخ الأصلية.

 

3. بالنسبة للمكتبات DLL، بالطبع بإمكانك عمل مكتبات، ضمن Visual Studio قم بعمل مشروع جديد من نوع Class Library، واضف كلاس جديد عليه (تأكد من وضوع تعريف الكلاس ك public)، ثم قم بكتابة دالة معينه ضمن هذا الكلاس، ثم قمل بعمل Build للمشروع، ضمن مجلد bin الخاص بالمشروع، ستجد مكتبتك الجديد، ولإستخدامها فقط قم بإضافتها إلى أي مشروع عن طريق Add Refrence

 

4. Threading موضوع مهم وجميل جدأ، إذا خصوصا ببناء التطبيقات متعددة المهام، لكن الدوت نت الجديدة، قدمت مجموعة جديدا مثلا Taskو BackgroundWorker وغيرها، واتوقع ان مقالات موقع CodeProject هي بداية جيدة، كونها مقالات نظرية وعمليه بنفس الوقت، بالإضافة لإحتواءها على Source Code

Threading In C#

Tasks in C#

 

طبعا هناك المزيد من التوضيح، لأن كل مفهوم مرتبط بمفاهيم اخرى،،،

بالتوفيق

2

• • •


[ ربيّ احفظ سوريا الحبيبة]


oFOK7Kd.png

#3

ترفع لك القبعة ....
حياااك الله ... ريتني تلميذك :-)

 

1
#4
ghadeer-youseef كتب:

ترفع لك القبعة ....

حياااك الله ... ريتني تلميذك :-)

 

 

سلمك الله صديقي، ورقع قدرك.

 

هناك موضوع بخصوص Threading، كنت قد كتبته منذ فترة في هذا الموقع، أتمنى ان يفيدك

 

البرمجة متعددة المهام

 

بالتوفيق،،،

1

• • •


[ ربيّ احفظ سوريا الحبيبة]


oFOK7Kd.png

#5
Eng.Tareq Jehad كتب:

سلمك الله صديقي، ورقع قدرك.

 

هناك موضوع بخصوص Threading، كنت قد كتبته منذ فترة في هذا الموقع، أتمنى ان يفيدك

 

البرمجة متعددة المهام

 

بالتوفيق،،،

مشكور ممكن سؤال ....

ب threading 

System.Threading.Thread thread = new System.Threading.Thread(unused=> to_listen( هذا اسم الفنكشن الي بدي اعمله مسار تنفيذي ));
 
unused=>
شو تعني هذا الإشارة ... لما اشر بالماوس على unused  يخبرني انه object  ممكن توضيح .... 
#6

نعم اخي الكريم.

 

هذه الإشارة مهمة جدأ، وتستخدم ضمن Lambda Expression وتستيطع قرائتها بالشكل (حيث أن)، وهو موضوع مهم جداً ويساعدك بإختصار أجزاء كثيرة من الكود،

سأشرح لك مثال صغير، وعلى أساسه ستفهم ما أقصد، وستجيب عن سؤالك بنفسك.

 

بفرض لدي مجموعة من الأعداد الصحيحة من 1 إلى 10، وأريد معرفة الأعداد الزوجية ضمن هذه المجموعة، 

الطريقة التقليدية هي ضمن حلقة for او foreach، والمرور على كل عنصر واختباره هل هو زوجي وإذا كان كذلك نزيد قيمة العداد، كالتالي:

            List<int> Numbers = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
            int evens = 0;

            foreach (int number in Numbers)
            {
                if (number % 2 == 0)
                    evens++;
            }
            // Print the result

لكن مع Lambda Expression، نستطيع القيام بالعملية السابقة بتعريف بسيط يشرح نفسه، كالتالي:

List<int> Numbers = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
            int evens = Numbers.Count(number => number % 2 == 0);
            // Print the result

لاحظ معي المتغير number، لو أشرت عليه بالماوس، ستجده من نوع int، (نستطيع قراءة السطر بالشكل التالي: المتغير evens يساوي مجموع عناصر المجموعة Numbers بحيث أن كل عنصر number هو عدد زوجي).

بالتالي هو نوع معروف حسب نوع البيانات الذي نتعامل معه Integers.

 

اتمنى ان تكون الفكرة وصلت.

 

بالتوفيق،،،

تم تعديل هذه المشاركة بواسطة Eng.Tareq Jehad في 18 سبتمبر 2014 في 13:27

1

• • •


[ ربيّ احفظ سوريا الحبيبة]


oFOK7Kd.png

#7
Eng.Tareq Jehad كتب:

نعم اخي الكريم.

 

هذه الإشارة مهمة جدأ، وتستخدم ضمن Lambda Expression وتستيطع قرائتها بالشكل (حيث أن)، وهو موضوع مهم جداً ويساعدك بإختصار أجزاء كثيرة من الكود،

سأشرح لك مثال صغير، وعلى أساسه ستفهم ما أقصد، وستجيب عن سؤالك بنفسك.

 

بفرض لدي مجموعة من الأعداد الصحيحة من 1 إلى 10، وأريد معرفة الأعداد الزوجية ضمن هذه المجموعة، 

الطريقة التقليدية هي ضمن حلقة for او foreach، والمرور على كل عنصر واختباره هل هو زوجي وإذا كان كذلك نزيد قيمة العداد، كالتالي:

            List<int> Numbers = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
            int evens = 0;

            foreach (int number in Numbers)
            {
                if (number % 2 == 0)
                    evens++;
            }
            // Print the result

لكن مع Lambda Expression، نستطيع القيام بالعملية السابقة بتعريف بسيط يشرح نفسه، كالتالي:

List<int> Numbers = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
            int evens = Numbers.Count(number => number % 2 == 0);
            // Print the result

لاحظ معي المتغير number، لو أشرت عليه بالماوس، ستجده من نوع int، (نستطيع قراءة السطر بالشكل التالي: المتغير evens يساوي مجموع عناصر المجموعة Numbers بحيث أن كل عنصر number هو عدد زوجي).

بالتالي هو نوع معروف حسب نوع البيانات الذي نتعامل معه Integers.

 

اتمنى ان تكون الفكرة وصلت.

 

بالتوفيق،،،

مشكور :-) جد أنا ممنونك ... بس طمعت و اسى بدي اسألك سؤال ....

هي فكرة يمكن ما بتطبق ... 

بدي برنامج يشتغل بالخلفية ( يعني بلا form أو Console ) في امكانيه ...

أنا مطبق هيك نوعية من البرامج بالاسمبلي ...

 

program.cs
 
Static Main ()
{
// حاولت غير الكود وجربت بس بلا فائدة
} 
-------
عملت Class و خليت فيه Main لتصير نقطة الانطلاق منه مامشي الحلال بنوب ... 
في امكانيه و لي اجباري الفورم  يتحمل  ... 
#8

أهلا بك أخي الكريم.

في عالم Software لا يوجد شي لا يمكن تطبيقه.

 

ما تحاول عمله يا صديقي يسمى ب Service، وهو مشابه ل Skype, Outlook, Yahoo Messenger, etc... ونظام التشغيل ويندوز لديه كمية كبيرة من هذه الخدمات تسمى Windows Services، ويمكنك استغلالها ايضاً، لو فتحت Run وكتبت services.msc

ستشاهد مجموعة الـ Services الموجودة على ويندوز.

 

بالتالي كل ما عليك فعله هو إنشاء خدمة جديدة، وبالطبع تستطيع إنشاءها ضمن سي شارب.

إليك المقال التالي، سيفيدك ببناء سيرفس بسيطة، ويمنكنك التوسع بالموضوع بعدها.

 

#Creating a Basic Windows Service in C

بالتوفيق،،،

1

• • •


[ ربيّ احفظ سوريا الحبيبة]


oFOK7Kd.png

مواضيع مشابهة