Search This Blog

Friday, December 24, 2010

C# Windows Application ရဲ့ Program.cs နဲ့ပတ်သက်လို့

C# Windows Application တွေတိုင်းမှာ Program.cs ဆိုတဲ့ ဖိုင်တစ်ဖိုင် ပါပါတယ်။ များသောအားဖြင့် ကျွန်တော်တို့ အဲဒီဖိုင်ကို ပြင်လေ့မရှိကြပါဘူး။ ဒါပေမယ့် တစ်ခါတစ်လေမှာ Advance Features တွေအတွက် အဲဒီဖိုင်ကို ပြင်ဖို့လိုပါတယ်။ အဲဒီ ဖိုင်နဲ့ ပတ်သက်ပြီး ကျွန်တော် သိထားသမျှ အချက်အလက် အချို့ကို ဝေမျှ ချင်ပါတယ်။

Startup Form ကို ပြောင်းခြင်း


Program.cs ထဲမှာ ပရိုဂရမ်စတဲ့ အချိန်မှာ Form တစ်ခု ကို စပြီး Run ဖို့ အတွက် အခုလို ရေးထားပါတယ်။

Application.Run(new Form1());
 
အဲဒီစာကြောင်းကို ပြောင်းရေးရင် Startup Form ဟာ ပြောင်းသွားပါတယ်။

Application.Run(new Form2()); 


အဲဒီလို ပြောင်းလိုက်ရင် Form1 အစား Form2 ဟာ Startup Form ဖြစ်သွားပါတယ်။

Global Exception Catch လုပ်ခြင်း

Program ရေးတဲ့အခါမှာ ရုပ်အဆိုးဆုံးက Exception တွေ ဖမ်းလို့မရပဲ လွတ်ထွက်သွားတာမျိုးပါ။ ကျွန်တော်တို့ ဘယ်လောက်ပဲ သတိထားရေးရေး တစ်ခါတစ်ရံမှာ လွတ်ထွက်သွားတတ်ပါတယ်။ အဲဒီအခါမှာ ဆော့ဖ်ဝဲသုံးသူကို မက်ဆေ့ဖ် ပေးပြီး LogFile ထဲမှာ ရေးထားဖို့ လိုပါတယ်။ C# မှာ Global Exception Catch လုပ်ဖို့အတွက် Program.cs ကို ပြင်လို့ရပါတယ်။ အဲဒီလိုလုပ်ခြင်းအားဖြင့် ဘယ်နေရာက လွတ်ထွက်သွားတယ်ဆိုတာကို Stack Trace နဲ့အတူ LogFile ထဲမှာ ရေးထားနိုင်ပါတယ်။

Application.Run(new Form1()); ဆိုတဲ့ Statement မတိုင်ခင်မှာ ဒီလိုရေးပေးနိုင်ပါတယ်။

AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
Application.Run(new Form1());


ပြီးရင် Main() Function ရဲ့ အပြင်ဖက်မှာ ဒီလိုပြန်ဖမ်းလို့ရပါတယ်။

static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
//Write your catch code here
}


ရေးရမှာ ပျင်းရင် AppDomain.CurrentDomain.UnhandledException += ဆိုတဲ့ စာကြောင်းရိုက်ပြီးရင် Tab ၂ချက်ခေါက်လိုက်တာနဲ့ Event ရော၊ Function ပါထွက်လာပါလိမ့်မယ်။


Global Variable ကြေငြာခြင်း

C# ရဲ့ Built-in feature မှာ Global Variable မပါပါဘူး။ ဒါပေမယ့် Hardware နဲ့ ထိတွေ့နေရတဲ့ ပရိုဂရမ်တွေ အတွက်တော့ Global Variable ဟာ မရှိမဖြစ်လိုအပ်နေပါသေးတယ်။ အဲဒီတော့ ပရိုဂရမ်တစ်ခုလုံးက သုံးလို့ရတဲ့ Global Variable ကိုလိုချင်ရင် Program.cs ထဲမှာ ကြေငြာပေးလို့ရပါတယ်။

static class Program ဆိုတဲ့ Declaration အပြီးမှာ အခုလိုကြေငြာလို့ရပါတယ်။

public static int MyGlobalInt = 0;
အဲဒီ Variable ကို ပရိုဂရမ်ရဲ့ ဘယ်နေရာကဖြစ်ဖြစ် Program.MyGlobalInt ဆိုပြီး ပြန်ညွှန်းလို့ရပါတယ်။

Program Instance ၂ ခု Run လို့မရအောင် တားဆီးခြင်း

တစ်ခါတစ်လေမှာ ကျွန်တော်တို့ အနေနဲ့ Program Instance၂ ခု Run မှာကို မလိုလားပါဘူး။ အထူးသဖြင့် အရေးကြီးတဲ့ System Resource တွေကို ဝေမျှသုံးစွဲဖို့ မဖြစ်နိုင်တဲ့ အခါမျိုးမှာပါ။ အဲဒီအခါမှာ Main() Function ရဲ့ အစမှာ ဒီလိုရေးပြီး တားဆီးလို့ ရပါတယ်။

bool wasCreated;
System.Threading.Mutex aMutex = new System.Threading.Mutex(true, "My Software", out wasCreated);
if (!wasCreated)
{
MessageBox.Show("The program is already running.");
return;
}


အဲဒီလိုရေးထားတဲ့အတွက် Computer ပေါ်မှာ Program Instanceတစ်ခု Run ပြီးသားဖြစ်နေရင် နောက်တစ်ခု ထပ် Run တဲ့အခါမှာ Error Message ပေးပြီး ထွက်သွားပါလိမ့်မယ်။

Program မှ Parameters လက်ခံခြင်း

Program မှာ Command Line Parameters လက်ခံတဲ့အခါမှာ လိုအပ်သလိုပိုပြီး ထိန်းချုပ်လို့ရပါတယ်။ ဥပမာ ကိုယ့်ရဲ့ ပရိုဂရမ်ကို Mode အမျိုးမျိုးနဲ့ Run ချင်တဲ့အခါမှာ Parameters ဟာ အသုံးဝင်ပါတယ်။ အဲဒါတွင်မက ၀င်းဒိုးထဲမှာ ကိုယ့် ပရိုဂရမ်နဲ့ ဆိုင်တဲ့ File အိုင်ကွန်ကို ကလစ်နှိပ်လိုက်တဲ့အခါ ပရိုဂရမ်ကို အလိုအလျောက်စပြီး ကလစ်နှိပ်လိုက်တဲ့ ဖိုင်ကို ပရိုဂရမ်ထဲမှာ သုံးချင်တဲ့အခါမှာ (ဥပမာ Microsoft Word Documentကို ကလစ်နှိပ်ပြီး Run with Microsoft Word ဆိုရင် MS Word ထဲမှာ အလိုအလျောက်ပွင့်လာသလိုမျိုး)လည်း Parameters ကိုသုံးနိုင်ပါတယ်။ Parameters လက်ခံမယ်ဆိုရင်တော့ Main() Function ရဲ့ ခေါင်းစဉ်ကို အခုလိုပြင်ပေးရပါမယ်။

static void Main(string[] args)

အဲဒီနောက် Main() Function ထဲမှာ args ကို လိုသလိုသုံးနိုင်ပါတယ်။ args.Length ဆိုရင် Parameters ဘယ်နှစ်ခု ၀င်လာသလဲဆိုတာ ပြမှာဖြစ်ပြီး args[0] ဆိုရင် တော့ ပထမဆုံး Parameter ကို String အနေနဲ့ ရမှာဖြစ်ပါတယ်။

MyanmarITPro မှာ တင်ခဲ့ဖူးတဲ့ ဘလော့ခ်ပို့စ်တစ်ခုကို နည်းနည်း ပြန်ပြင်ပြီး တင်ထားတာပါ။

No comments: