PDA

View Full Version : سوال: فراخواني يك متد از windows serivce توسط windows application



shaki_phd
چهارشنبه 13 خرداد 1388, 11:09 صبح
سلام دوستان

من يك ويندوز سرويس دارم كه درون اين ويندوز سرويس يك متد وجود دارد من ميخواستم بدونم چه جور ميتونم اين متد از windows service را در يك برنامه windows application هر وقت كه خواستم call كنم

به عنوان مثال متد سرويس من هر وقت بهش پارامتر x را پاس كردم بايد بياد برام x+2 را برگردونه

با تشكر

kiarash_h18
چهارشنبه 13 خرداد 1388, 12:35 عصر
سلام دوستان

من يك ويندوز سرويس دارم كه درون اين ويندوز سرويس يك متد وجود دارد من ميخواستم بدونم چه جور ميتونم اين متد از windows service را در يك برنامه windows application هر وقت كه خواستم call كنم

به عنوان مثال متد سرويس من هر وقت بهش پارامتر x را پاس كردم بايد بياد برام x+2 را برگردونه

با تشكر

سلام.
فكر ميكنم كه اين sample ساده اي كه نوشتم بتونه كمكت كنه.
موفق باشيد.
يا حق.

shaki_phd
چهارشنبه 20 خرداد 1388, 18:22 عصر
دوست عزيز اين برنامه شما فقط مياد يك سرويس را start يا stop ميكنه اينكه به درد من نميخوره من ميخوام به يك تابع درون يك سرويس دسترسي داشته باشم
با تشكر

SabaSabouhi
یک شنبه 24 خرداد 1388, 12:49 عصر
دوست عزيز اين برنامه شما فقط مياد يك سرويس را start يا stop ميكنه اينكه به درد من نميخوره من ميخوام به يك تابع درون يك سرويس دسترسي داشته باشم
با تشكر

با سلام
خیر، نمی‌شود.
تنها راه موجود این است که در Service مورد نظرتان، وقفه‌ی Command رو override کنید.



protected override void OnCustomCommand(int command)
{
// A custom command can be sent to a service by using this method:
//# int command = 128; //Some Arbitrary number between 128 & 256
//# ServiceController sc = new ServiceController("NameOfService");
//# sc.ExecuteCommand(command);


base.OnCustomCommand(command);
}



محدودیت شما این است که فقط می‌توانید یک کد بین 128 تا 255 را ارسال کنید. احتمالاً باید باقی اطلاعات را در registry و یا یک فایل فیزیکی قرار دهید.


صبا صبوحی

SabaSabouhi
یک شنبه 24 خرداد 1388, 12:57 عصر
احتمالاً باید باقی اطلاعات را در registry و یا یک فایل فیزیکی قرار دهید.



با سلام مجدد
توجه کنید که اگه از Registry برای تبادل اطلاعات استفاده می‌کنید، حتماً از localMachine استفاده کنید چون CurrentUser برای Windows Service معمولاً با Application متفاوت است. ( چون معمولاً Windows Service از Local Account استفاده می‌کند )

صبا صبوحی