Останавливаю службы из списка List<string>
таким способом:
namespace ConsoleApplication25 {
class Program {
static List<string> services = new List<string> {
"AdobeARMService", "RemoteRegistry", "TermService", "Messenger", "SSDPSRV"
};
static void Main(string[] args) {
Task.Factory.StartNew(() => Run());
Console.ReadLine();
}
static void Run() {
while (true) {
var temp = ServiceController.GetServices().Where(s => services.Contains(s.ServiceName)).ToList();
temp.ForEach(t => {
try {
t.Stop();
}
catch { }
});
Thread.Sleep(500);
}
}
}
}
А как сделать обход служб в List<string> services
? чтобы их не останавливал, а все остальные службы которых нету в списке остановить.
Очень опасно останавливать все службы... Но хозяин барин...
public async Task<bool> StopAllServicesExcept(params string[] exceptServices)
{
var servicesToStop = ServiceController.GetServices().Where(s => !exceptServices.Contains(s.ServiceName));
var tasks = servicesToStop.Select(s => Task.Run(() =>
{
try
{
s.Stop();
s.WaitForStatus(ServiceControllerStatus.Stopped, TimeSpan.FromMinutes(1));
return true;
}
catch (Exception)
{
return false;
}
})).ToList();
await Task.WhenAll(tasks);
return tasks.All(t => t.Result);
}
Что тут происходит:
true
в случае успешного стопа, иначе - false
.true
, если все сервисы стопнулись успешно, иначе - false
.Вызывать из асинхронной функции просто:
var allServicesStopped = await StopAllServicesExcept("Service1", "Service2");
Если вызывать из Main
:
var task = StopAllServicesExcept("Service1", "Service2");
task.Wait();
var allServicesStopped = task.Result;
Не могу решить умножение матриц через форму, то есть надо задать размер двух матриц так же через форму, умножить и вывести на экран