В скомпилированном командлете, как я могу написать ошибку с задания потока, не похоронив позиции?C#

Место общения программистов C#
Ответить
Anonymous
 В скомпилированном командлете, как я могу написать ошибку с задания потока, не похоронив позиции?

Сообщение Anonymous »

Ошибки на заданиях потока, записанные в потоку ошибок с помощью recement-job Покажите PositionMessage для ошибки исходного происхождения.
Рассмотрим, например,

Код: Выделить всё

$job =
Start-ThreadJob {
1/0 # error line
}
$job | Wait-Job | Out-Null
$job | Receive-Job
< /code>
, который выводит < /p>
RuntimeException:
Line |
2 |          1/0 # error line
|          ~~~
| Attempted to divide by zero.
< /code>
Обратите внимание, что оригинальная линия ошибок отображается.  Вывод номера строки неверен (что является совсем другим вопросом), но, по крайней мере, оспариваемый код, показанный в сообщении по позиции, является правильным. < /P>
Я также хотел бы написать ошибки из задания потока Из моего собственного скомпилированного cmdlet 
например, chective-Job делает. Тем не менее, написание ошибки с помощью cmdlet.writeerror () показывает позицию Cmdlet не позиция исходной ошибки:

Код: Выделить всё

Add-Type @'
using System.Management.Automation;

[Cmdlet(VerbsCommunications.Receive,"JobFancy")]
public class ReceiveJobFancy : PSCmdlet {
[Parameter(Mandatory = true,ValueFromPipeline = true)]
public Job Job {get; set;}
protected override void ProcessRecord() {
foreach (var e in Job.Error) WriteError(e);
}
}
'@ -PassThru   |
% Assembly |
Import-Module

$job =
Start-ThreadJob {
1/0 # error line
}
$job | Wait-Job | Out-Null
$job | Receive-JobFancy
< /code>
Выходы < /p>
Line |
22 |  $job | Receive-JobFancy
|         ~~~~~~~~~~~~~~~~
| Attempted to divide by zero.
Показание всех ошибок в $ job с той же позицией принимающей команды затрудняет диагностику. Get-error выявляет errorRecord с исходной строкой ошибок в $ .exception.errorrercord . Но использование get-error , чтобы увидеть все ошибки с работы, неловко. Я бы предпочел подражать поведению приема Job , чтобы показана исходная ошибка.
Как я могу написать ошибку с задания, чтобы показать оригинал Положение сообщений, например, получение Job ?

Подробнее здесь: https://stackoverflow.com/questions/794 ... ut-burying
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»