vinodh muthusamy Ответов: 0

Pipelineexecutor не поддерживает это ключевое слово в ASP.NET


Я пытаюсь получить статус сценария в asp.net, но он не поддерживает это ключевое слово в функции PiplelineExecutor. Я дал свой код. ниже.

pipelineExecutor = new PipelineExecutor(runSpace,this, Script);
               pipelineExecutor.OnDataReady += new PipelineExecutor.DataReadyDelegate(pipelineExecutor_OnDataReady);
               pipelineExecutor.OnDataEnd += new PipelineExecutor.DataEndDelegate(pipelineExecutor_OnDataEnd);
               pipelineExecutor.OnErrorReady += new PipelineExecutor.ErrorReadyDelegate(pipelineExecutor_OnErrorReady);
               pipelineExecutor.Start();


private void pipelineExecutor_OnDataEnd(PipelineExecutor sender)
        {
            if (sender.Pipeline.PipelineStateInfo.State == PipelineState.Failed)
            {
                AppendLine(string.Format("Error in script: {0}", sender.Pipeline.PipelineStateInfo.Reason));
            }
            else
            {
                AppendLine("Ready.");
            }
        }

        private void pipelineExecutor_OnDataReady(PipelineExecutor sender, ICollection<PSObject> data)
        {
            foreach (PSObject obj in data)
            {
                AppendLine(obj.ToString());
            }
        }

        void pipelineExecutor_OnErrorReady(PipelineExecutor sender, ICollection<object> data)
        {
            foreach (object e in data)
            {
                AppendLine("Error : " + e.ToString());
            }
        }


Файл класса PipelineExecutor

public PipelineExecutor(Runspace runSpace,ISynchronizeInvoke invoker,string command)
       {
           this.invoker = invoker;

           // initialize delegates
           synchDataReady = new DataReadyDelegate(SynchDataReady);
           synchDataEnd = new DataEndDelegate(SynchDataEnd);
           synchErrorReady = new ErrorReadyDelegate(SynchErrorReady);

           // initialize event members
           stopEvent = new ManualResetEvent(false);
           waitHandles = new WaitHandle[] { null, stopEvent };
           // create a pipeline and feed it the script text
           pipeline = runSpace.CreatePipeline(command);

           // we'll listen for script output data by way of the DataReady event
           pipeline.Output.DataReady += new EventHandler(Output_DataReady);
           pipeline.Error.DataReady += new EventHandler(Error_DataReady);
       }

       void Error_DataReady(object sender, EventArgs e)
       {
           // fetch all available objects
           Collection<object> data = pipeline.Error.NonBlockingRead();

           // if there were any, invoke the ErrorReady event
           if (data.Count > 0)
           {
               StoppableInvoke(synchErrorReady, new object[] { this, data });
           }
       }

       /// <summary>
       /// Start executing the script in the background.
       /// </summary>
       public void Start()
       {
           if (pipeline.PipelineStateInfo.State == PipelineState.NotStarted)
           {
               // close the pipeline input. If you forget to do
               // this it won't start processing the script.
               pipeline.Input.Close();
               // invoke the pipeline. This will cause it to process the script in the background.
               pipeline.InvokeAsync();
           }
       }


Что я уже пробовал:

попробовал тот же код выше. Он выдает ошибку как "
Error	25	The best overloaded method match for 'Codeproject.PowerShell.PipelineExecutor.PipelineExecutor(System.Management.Automation.Runspaces.Runspace, System.ComponentModel.ISynchronizeInvoke, string)' has some invalid arguments	 
"

CHill60

Ошибка вполне понятна - вы пытаетесь создать новый PipelineExecutor, но не указали правильные параметры

vinodh muthusamy

Нет, я правильно передал входной параметр.

Можете ли вы сказать, как рассогласование параметров.

CHill60

"Нет, я правильно передал входной параметр." - Нет, не видел.
"Можете ли вы сказать, как несоответствие параметров." - Да ... Ошибка 25 лучший перегруженный метод подходит для ' Codeproject.PowerShell.PipelineExecutor.PipelineExecutor(Системы.Управления.Автоматизация.Пространство выполнения.Пространство Выполнения, Системы.ComponentModel.ISynchronizeInvoke, string) ' имеет некоторые недопустимые аргументы

vinodh muthusamy

частная пространства пространства;

string Script = " java-jar D:\\jenkins-cli.jar -с http://172.16...:8080/ create-job test12 < C:\\Projects\\sample\\xml\\Test12.xml";

Это вход, который я передал для этого piplelineExecutor
pipelineExecutor = новый PipelineExecutor(runSpace, this, Script);


нужно ли мне здесь менять какой-то код?

CHill60

Я думаю runSpace это система управления.Автоматизация.Пространство выполнения.Пространства?
Я это вижу Script являться строкой.
Является this система.ComponentModel.ISynchronizeInvoke ? Скорее всего, нет.

vinodh muthusamy

Я не могу понять, что вы пытаетесь сказать. можете ли вы объяснить или решить мою проблему

Спасибо вам

CHill60

Метод ожидает 3 параметра.
Первый из них должен быть типа System.Management.Автоматизация.Пространство выполнения.Пространство выполнения. Вы проходите в нечто под названием runSpace - я предполагаю, что это правильный тип.
Третий параметр должен быть строкой. Я вижу, что переменный скрипт, который вы передаете, определенно является строкой.
Второй параметр должен реализовывать систему.ComponentModel.ISynchronizeInvoke. Вы передаете "это" - я подозреваю, что вы на самом деле хотели передать this.invoker

0 Ответов