In order to get the result in time, sometimes, it's a good way to trigger the server's scheduled task in user's local machine.
Below codes show one method to work it out by command line.
using System.Diagnostics;
private void btnRefleshData_Click(object sender, EventArgs e)
{
string strCommand = "schtasks /run /tn job_name /s server_name /U domain_name\\login_id /P \"password\"";
if (TriggerJob(strCommand) == true)
{
System.Threading.Thread.Sleep(10000); //10秒
MessageBox.Show("刷新OK");
}
}
private bool TriggerJob(string strCommand)
{
try
{
Process p = new Process();
p.StartInfo.FileName = "cmd.exe";
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardInput = true;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.RedirectStandardError = true;
p.StartInfo.CreateNoWindow = true;
p.StartInfo.Arguments = "";
p.Start();
p.StandardInput.WriteLine(strCommand);
//p.StandardInput.WriteLine("net use * /delete /yes");
p.StandardInput.WriteLine("exit");
string strRst = p.StandardOutput.ReadToEnd();
return true;
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString()+"\n"+ex.StackTrace, "Error!");
return false;
}
}