Поделиться через


ReportingService2005.CancelJob(String) Метод

Определение

Отменяет выполнение задания.

public:
 bool CancelJob(System::String ^ JobID);
public bool CancelJob (string JobID);
member this.CancelJob : string -> bool
Public Function CancelJob (JobID As String) As Boolean

Параметры

JobID
String

Идентификатор задания, которое нужно отменить. Идентификатор задания можно получить из свойства JobID в объекте Job.

Возвращаемое значение

Значение Boolean. Значение true возвращается, если задание успешно отменено.

Примеры

Для компиляции этого примера кода необходимо ссылаться на Reporting Services WSDL и импортировать определенные пространства имен. Дополнительные сведения см. в разделе Примеры компиляции и выполнения кода. Следующий пример кода представляет собой консольное приложение, которое позволяет пользователям отменять все выполняемые задания на заданном сервере отчетов:

Imports System  
Imports System.Web.Services.Protocols  

Class Sample  
   Public Shared Sub Main()  
      Dim rs As New ReportingService2005()  
      rs.Credentials = System.Net.CredentialCache.DefaultCredentials  

      Dim jobs As Job() = Nothing  

      ' Return a list of current jobs.  
      Try  
         jobs = rs.ListJobs()  

         ' Provides a prompt to cancel current jobs.  
         If ListRunningJobs(jobs) Then  
            Console.Write("Do you want to cancel these jobs (Y/N)?")  
            Dim input As Integer = Console.Read()  
            If [Char].ToLower(CChar(input)) = "y"c Then  
               CancelRunningJobs(jobs, rs)  
            End If  
         End If  
      Catch e As SoapException  
         Console.WriteLine(e.Detail.InnerXml.ToString())  
      End Try  
   End Sub 'Main  

   ' Method to send a list of current jobs and their properties  
   ' to standard output.  
   Public Shared Function ListRunningJobs(jobs() As Job) As Boolean  
      Dim runningJobCount As Integer = 0  
      Console.WriteLine("Current Jobs")  
      Console.WriteLine(("================================" + Environment.NewLine))  
      Dim job As Job  
      For Each job In  jobs  
         If job.Status = JobStatusEnum.Running Or job.Status = JobStatusEnum.New Then  
            Console.WriteLine("--------------------------------")  
            Console.WriteLine("JobID: {0}", job.JobID)  
            Console.WriteLine("--------------------------------")  
            Console.WriteLine("Action: {0}", job.Action)  
            Console.WriteLine("Description: {0}", job.Description)  
            Console.WriteLine("Machine: {0}", job.Machine)  
            Console.WriteLine("Name: {0}", job.Name)  
            Console.WriteLine("Path: {0}", job.Path)  
            Console.WriteLine("StartDateTime: {0}", job.StartDateTime)  
            Console.WriteLine("Status: {0}", job.Status)  
            Console.WriteLine("Type: {0}", job.Type)  
            Console.WriteLine("User: {0}" + Environment.NewLine, job.User)  
            runningJobCount += 1  
         End If  
      Next job  
      Console.Write("There are {0} running jobs. ", runningJobCount)  
      If runningJobCount > 0 Then  
         Return True  
      Else  
         Return False  
      End If  
   End Function 'ListRunningJobs  

   Public Shared Sub CancelRunningJobs(jobs() As Job, rs As ReportingService)  
      Try  
         Dim job As Job  
         For Each job In  jobs  
            If job.Status = JobStatusEnum.Running Or job.Status = JobStatusEnum.New Then  
               rs.CancelJob(job.JobID)  
            End If  
         Next job  
         Console.WriteLine("All jobs successfully canceled.")  
      Catch e As SoapException  
         Console.WriteLine(e.Detail.InnerXml.ToString())  
      End Try  
   End Sub 'CancelRunningJobs  
End Class 'Sample  
using System;  
using System.Web.Services.Protocols;  

class Sample  
{  
   public static void Main()  
   {  
      ReportingService rs = new ReportingService2005();  
      rs.Credentials = System.Net.CredentialCache.DefaultCredentials;  

      Job[] jobs = null;  

      // Return a list of current jobs.  
      try  
      {  
         jobs = rs.ListJobs();  

         // Provides a prompt to cancel current jobs.  
         if (ListRunningJobs(jobs))  
         {  
            Console.Write("Do you want to cancel these jobs (Y/N)?");  
            int input = Console.Read();  
            if (Char.ToLower((char)input)== 'y')   
            {  
               CancelRunningJobs(jobs, rs);  
            }  
         }  
      }  
      catch (SoapException e)  
      {  
         Console.WriteLine(e.Detail.InnerXml.ToString());  
      }  
   }  

   // Method to send a list of current jobs and their properties  
   // to standard output.  
   public static bool ListRunningJobs(Job[] jobs)  
   {     
      int runningJobCount = 0;  
      Console.WriteLine("Current Jobs");  
      Console.WriteLine("================================" + Environment.NewLine);  
      foreach (Job job in jobs)  
      {  
         if (job.Status == JobStatusEnum.Running ||   
               job.Status == JobStatusEnum.New)  
         {     
            Console.WriteLine("--------------------------------");  
            Console.WriteLine("JobID: {0}", job.JobID);  
            Console.WriteLine("--------------------------------");  
            Console.WriteLine("Action: {0}", job.Action);  
            Console.WriteLine("Description: {0}", job.Description);  
            Console.WriteLine("Machine: {0}", job.Machine);  
            Console.WriteLine("Name: {0}", job.Name);  
            Console.WriteLine("Path: {0}", job.Path);  
            Console.WriteLine("StartDateTime: {0}", job.StartDateTime);  
            Console.WriteLine("Status: {0}", job.Status);  
            Console.WriteLine("Type: {0}", job.Type);  
            Console.WriteLine("User: {0}" + Environment.NewLine, job.User);  
            runningJobCount++;  
         }  
      }  
      Console.Write("There are {0} running jobs. ", runningJobCount);  
      if (runningJobCount > 0)  
         return true;  
      else  
         return false;  
   }  

   public static void CancelRunningJobs(Job[] jobs, ReportingService rs)  
   {     
      try  
      {  
         foreach (Job job in jobs)  
         {  
            if (job.Status == JobStatusEnum.Running ||   
               job.Status == JobStatusEnum.New)  
            {     
               rs.CancelJob(job.JobID);  
            }  
         }  
         Console.WriteLine("All jobs successfully canceled.");  
      }  
      catch (SoapException e)  
      {  
         Console.WriteLine(e.Detail.InnerXml.ToString());  
      }  
   }  
}  

Комментарии

В следующей таблице показаны сведения о заголовках и разрешениях для этой операции.

Заголовки SOAP (Out) ServerInfoHeaderValue
Необходимые разрешения CancelJobs

Если идентификатор задания, переданный в параметре JobID , не найден, возвращается ошибка. При вызове этого метода с использованием идентификатора задания, которое уже было отменено, сервер отчетов игнорирует операцию.

Используйте метод , ListJobs чтобы получить список заданий, которые в настоящее время выполняются на сервере отчетов.

Применяется к