本文整理汇总了C#中IJob.StartExecutionProgressTask方法的典型用法代码示例。如果您正苦于以下问题:C# IJob.StartExecutionProgressTask方法的具体用法?C# IJob.StartExecutionProgressTask怎么用?C# IJob.StartExecutionProgressTask使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IJob
的用法示例。
在下文中一共展示了IJob.StartExecutionProgressTask方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: DoJobProgress
public void DoJobProgress(IJob job)
{
var tokenSource = new CancellationTokenSource();
var token = tokenSource.Token;
_MyListJobsMonitored.Add(job.Id, tokenSource); // to track the task and be able to cancel it later
Task.Run(() =>
{
try
{
job = job.StartExecutionProgressTask(JobRefreshIntervalInMilliseconds,
j =>
{
// Was cancellation already requested?
if (token.IsCancellationRequested == true)
{
return;
}
// refesh context and job
_context = Program.ConnectAndGetNewContext(_credentials); // needed to get overallprogress
/// NET TO RESTORE CONTEXT
IJob JobRefreshed = GetJob(j.Id);
int index = -1;
foreach (JobEntry je in _MyObservJob) // let's search for index
{
if (je.Id == JobRefreshed.Id)
{
index = _MyObservJob.IndexOf(je);
break;
}
}
if (index >= 0) // we found it
{ // we update the observation collection
if (JobRefreshed.State == JobState.Scheduled || JobRefreshed.State == JobState.Processing || JobRefreshed.State == JobState.Queued || JobRefreshed.State == JobState.Canceling) // in progress
{
double progress = JobRefreshed.GetOverallProgress();
_MyObservJob[index].Progress = progress;
_MyObservJob[index].Priority = JobRefreshed.Priority;
_MyObservJob[index].StartTime = JobRefreshed.StartTime.HasValue ? ((DateTime)JobRefreshed.StartTime).ToLocalTime().ToString("G") : null;
_MyObservJob[index].EndTime = JobRefreshed.EndTime.HasValue ? ((DateTime)JobRefreshed.EndTime).ToLocalTime().ToString("G") : null;
_MyObservJob[index].State = JobRefreshed.State;
Debug.WriteLine(index.ToString() + JobRefreshed.State);
StringBuilder sb = new StringBuilder(); // display percentage for each task for mouse hover (tooltiptext)
foreach (ITask task in JobRefreshed.Tasks) sb.AppendLine(string.Format("{0} % ({1})", Convert.ToInt32(task.Progress).ToString(), task.Name));
// let's calculate the estipated time
string ETAstr = "", Durationstr = "";
if (progress > 3)
{
DateTime startlocaltime = ((DateTime)JobRefreshed.StartTime).ToLocalTime();
TimeSpan interval = (TimeSpan)(DateTime.Now - startlocaltime);
DateTime ETA = DateTime.Now.AddSeconds((100d / progress - 1d) * interval.TotalSeconds);
TimeSpan estimatedduration = (TimeSpan)(ETA - startlocaltime);
ETAstr = "Estimated: " + ETA.ToString("G");
Durationstr = "Estimated: " + estimatedduration.ToString(@"d\.hh\:mm\:ss");
_MyObservJob[index].EndTime = ETA.ToString(@"G") + " ?";
_MyObservJob[index].Duration = JobRefreshed.EndTime.HasValue ?
((TimeSpan)((DateTime)JobRefreshed.EndTime - (DateTime)JobRefreshed.StartTime)).ToString(@"d\.hh\:mm\:ss")
: estimatedduration.ToString(@"d\.hh\:mm\:ss") + " ?";
}
int indexdisplayed = -1;
foreach (JobEntry je in _MyObservAssethisPage) // let's search for index in the page
{
if (je.Id == JobRefreshed.Id)
{
indexdisplayed = _MyObservAssethisPage.IndexOf(je);
try
{
this.BeginInvoke(new Action(() =>
{
this.Rows[indexdisplayed].Cells[this.Columns["Progress"].Index].ToolTipText = sb.ToString(); // mouse hover info
if (progress != 0)
{
this.Rows[indexdisplayed].Cells[this.Columns["EndTime"].Index].ToolTipText = ETAstr;// mouse hover info
this.Rows[indexdisplayed].Cells[this.Columns["Duration"].Index].ToolTipText = Durationstr;// mouse hover info
}
this.Refresh();
}));
}
catch
{
}
break;
}
}
}
else // no progress anymore (cancelled, finished or failed)
{
//.........这里部分代码省略.........