C#-তে বর্তমান এক্সিকিউটেবলের নাম পাওয়ার кільকটি উপায় আছে।
System.AppDomain ব্যবহার করে
অ্যাপ্লিকেশন ডোমেন ভিন্ন অ্যাপ ডোমেনে রান হচ্ছে কোডের মধ্যে আইসোলেশন প্রদান করে। App Domain কোড এবং ডেটার জন্য একটি লজিক্যাল কন্টেইনার যা প্রসেসের মতো এবং এর আলাদা মেমরি স্পেস এবং রিসোর্সের অ্যাক্সেস থাকে। App domain প্রসেসের মত একটি বাউন্ডারি হিসেবে কাজ করে যাতে একটি রানিং অ্যাপ্লিকেশনের অবজেক্টের ডেটা অন্য একটি থেকে অ্যাক্সেস করা যায় না অকস্মাত বা অবৈধভাবে।
`System.AppDomain` ক্লাস অ্যাপ্লিকেশন ডোমেন নিয়ে কাজ করার উপায় দেয়। এটি নতুন অ্যাপ্লিকেশন ডোমেন তৈরি করা, মেমরি থেকে ডোমেন আনলোড করা ইত্যাদির মেথড প্রদান করে।
এই মেথডটি এক্সটেনশনসহ ফাইলনেম রিটার্ন করে (যেমন: Application.exe)।
উদাহরণ
using System;
namespace DemoApplication
{
public class Program
{
public static void Main()
{
string currentExecutable = System.AppDomain.CurrentDomain.FriendlyName;
Console.WriteLine($"Current Executable Name: {currentExecutable}");
Console.ReadLine();
}
}
}
আউটপুট
Current Executable Name: MyConsoleApp.exe
System.Diagnostics.Process ব্যবহার করে
একটি প্রসেস একটি অপারেটিং সিস্টেম কনসেপ্ট এবং এটি উইন্ডোজ OS দ্বারা প্রদত্ত সবচেয়ে ছোট আইসোলেশন ইউনিট। যখন আমরা একটি অ্যাপ্লিকেশন রান করি, উইন্ডোজ অ্যাপ্লিকেশনের জন্য একটি প্রসেস তৈরি করে একটি স্পেসিফিক প্রসেস আইডি এবং অন্যান্য অ্যাট্রিবিউটসহ। প্রতিটি প্রসেসে প্রয়োজনীয় মেমরি এবং রিসোর্সের সেট অ্যালোকেট করা হয়।
প্রতিটি উইন্ডোজ প্রসেসে কমপক্ষে একটি থ্রেড থাকে যা অ্যাপ্লিকেশন এক্সিকিউশনের যত্ন নেয়। একটি প্রসেসে অনেক থ্রেড থাকতে পারে এবং সেগুলো এক্সিকিউশন গতিবর্ধন করে এবং রেসপন্সিভনেস বড়ায় কিন্তু একটি প্রাইমারি থ্রেড এক্সিকিউশন ধারণকারী প্রসেস আরও থ্রেড-সেফ মনে হয়।
এই মেথডটি এক্সটেনশন ছাড়া ফাইলনেম রিটার্ন করে (যেমন: Application)।
উদাহরণ ১
using System;
namespace DemoApplication
{
public class Program
{
public static void Main()
{
string currentExecutable = System.Diagnostics.Process.GetCurrentProcess().ProcessName;
Console.WriteLine($"Current Executable Name: {currentExecutable}");
Console.ReadLine();
}
}
}
আউটপুট
Current Executable Name: MyConsoleApp
উদাহরণ ২
using System;
namespace DemoApplication
{
public class Program
{
public static void Main()
{
string currentExecutable = System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName;
Console.WriteLine($"Current Executable Name: {currentExecutable}");
Console.ReadLine();
}
}
}
আউটপুট
Current Executable Name: C:\Users\UserName\source\repos\MyConsoleApp\MyConsoleApp\bin\Debug\MyConsoleApp.exe
উপরের উদাহরণে আমরা দেখতে পাচ্ছি যে `Process.GetCurrentProcess().MainModule.FileName` এক্সিকিউটেবল ফাইলটি ফোল্ডার পাথসহ রিটার্ন করে।