چه تکنولوژی می‌خواهید یاد بگیرید؟

نظرات و انتقادات خود را با ما در میان بگذارید

آپدیت روزانه

بیش از 1500 مطلب آموزشی

نیازهای روز

سی‌شارپ: تغییر وضعیت ویندوز سرویس با استفاده از کد نویسی

همانگونه که قبلا مطالعه نمودید سرویس‌های ویندوز، یک نوع Windows Service می‌باشند که در فضاء جداگانه‌ای و به هنگام بارگزاری ویندوز در صورت فعال بودن سرویس اجرا می‌شوند. ممکن است در کنار نرم‌افزار، از ویندوز سرویس به عنوان ابزار کمکی به منظور آپدیت نرم‌افزار، اجرا دستوراتی در زمان‌های خاص و یا ... استفاده نماید. 

با توجه به اینکه سرویس‌های ویندوز هیچ تعاملی با کاربر ندارند از این رو فاقد رابط کاربری می‌باشند، حال اگر از ویندوز سرویس به عنوان یک ابزار کمکی استفاده می‌کنید نیاز است در بخشی از نرم‌افزار، یک پنل برای مدیریت وضعیت ویندوز سرویس در نظر گرفته شود تا بتوان در زمان‌های خاص سرویس را متوقف، اجرا و یا ... نمود.

جهت تغییر وضعیت سرویس با استفاده از ServiceController، لازم است نخست ویژوال استودیو را با دسترسی Administrator اجرا نماید.

ServiceController service = new ServiceController("hshld");
if (service.Status == ServiceControllerStatus.Stopped || service.Status == ServiceControllerStatus.StopPending)
    service.Start();
else
    service.Stop();

کد فوق نخست بررسی می‌کند اگر Hotspot Shield Service اجرا نمی‌باشد آن را اجرا نموده و در غیر اینصورت موجب متوقف شدن سرویس خواهد شد. کلاس ServiceController مشتق کلاس Component است که خط Summary آن به صورت زیر می‌باشد:

/// <summary>
/// Represents a Windows service and allows 
/// you to connect to a running or stopped service, manipulate it, or get information about it.
/// </summary>

Enum ذیل وضعیت‌های یک سرویس خواهد بود که ویندوز سرویس می‌تواند به هر یک از آنها تغییر وضعیت دهد:

/// <summary>Indicates the current state of the service.</summary>
public enum ServiceControllerStatus
{
  Stopped = 1,
  StartPending = 2,
  StopPending = 3,
  Running = 4,
  ContinuePending = 5,
  PausePending = 6,
  Paused = 7,
}

لازم است توجه نماید علاوه بر متد Start و Stop قادر به دسترسی توابع Refresh، Pause و Continue می‌باشید که با فراخوانی هر یک از این توابع، سرویس با تغییر وضعیت روبرو خواهد بود.

امید نصری

0 نظر:

تعداد دیدگاه‌های کاربران : 0 دیدگاه
مهمان گرامی! برای ارسال نظر نیاز است وارد سایت شوید.


You must log on to comment.