2011-11-03 35 views
8

Tôi đang cố gắng viết một biểu mẫu đơn giản trong C# sẽ chạy tác vụ được lên lịch một số máy tính. kích thích tôi có cho đến nay là:C# bắt đầu một tác vụ được lập lịch

private void button_Click(object sender, EventArgs e) 
    { 
     try 
     { 

      for (int i = 0; i < num_of_computers; i++) 
      { 
       string line; 
       line = (" /run /tn myTask /s " + _ReplacerObj.MyComputers[i] + " /u user s /p password"); 
       proc.WindowStyle = System.Diagnostics.ProcessWindowStyle.Minimized; 
       proc.FileName = @"C:\WINDOWS\SYSTEM32\schtasks.exe"; 
       proc.Arguments = line; 
       Process.Start(proc); 
      } 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.ToString(), "Error Message!"); 
     } 

Đối với một số lý do này không hoạt động (IE - nhiệm vụ theo lịch trình đã không bắt đầu). Tôi đã thử chạy từ cmd này:

c:\windows\system32\schtasks.exe /run /tn myTask /s myIp /u user /p password 

và hoạt động tốt. Bất kỳ đề xuất nào? CẢM ƠN!

+0

"Vì lý do nào đó" - lý do gì? Nó có thể là bất cứ điều gì. Bạn có bất kỳ thông báo lỗi nào không? Khi bạn chạy mã này trong trình gỡ lỗi, 'Process.Start' trả về một giá trị - tức là Quy trình? – ChrisF

+0

Bạn đã xác nhận chuỗi để bắt đầu kết thúc giống với những gì bạn kiểm tra trong dấu nhắc lệnh? –

Trả lời

0

tôi sử dụng những điều sau đây mà làm việc tốt, có thể giúp đỡ (cắm vào lập luận của bạn)

var p = new Process 
          { 
           StartInfo = 
            { 
             UseShellExecute = false, 
             FileName = "SCHTASKS.exe", 
             RedirectStandardError = true, 
             RedirectStandardOutput = true, 
             CreateNoWindow = true, 
             WindowStyle = ProcessWindowStyle.Hidden, 
             Arguments = arguments 
            } 
          }; 
      p.Start(); 
6

tôi đề nghị sử dụng một trong những giấy gói NET cho lịch công việc.

Tôi đã sử dụng this one trong quá khứ để có hiệu quả tốt.

0

sử dụng Microsoft.Win32.TaskScheduler;

using (TaskService tasksrvc = new TaskService(@"\\" + servername, username, domain, password, true)) 
{  
    Task task = tasksrvc.FindTask(taskSchedulerName); 
    task.Run(); 
} 
Các vấn đề liên quan