Вам нужно установить параметры запроса, используя HttpParams
, и передать null
для полезной нагрузки, если у вас их нет:
const params = new HttpParams()
.set('peopleFieldID', peopleFieldID.toString())
.set('peopleFieldName', peopleFieldName);
// if you have a payload to pass you can do that in place of null below
return this.http
.put<number>(this.url, null, { params: params })
.pipe(catchError(this._errorHandling.handleError.bind(this)));}
Я нашел ответ в этой статье:
Закрытие BackgroundWorker и переопределяемая задача Patrick Smacchia
Я адаптировал его код:
Private _ValidationArgument As W3CValidator Sub W3CValidate(ByVal WholeDocumentText As String) If _ValidationArgument IsNot Nothing Then _ValidationArgument = New W3CValidator(WholeDocumentText) Exit Sub End If If Not ValidationWorker.IsBusy Then ValidationWorker.RunWorkerAsync(New W3CValidator(WholeDocumentText)) Exit Sub End If _ValidationArgument = New W3CValidator(WholeDocumentText) ValidationWorker.CancelAsync() Dim TimerRetryUntilWorkerNotBusy As New Windows.Threading.DispatcherTimer AddHandler TimerRetryUntilWorkerNotBusy.Tick, AddressOf WorkTicker TimerRetryUntilWorkerNotBusy.Interval = New TimeSpan(1) '100 nanoseconds TimerRetryUntilWorkerNotBusy.Start() End Sub Sub WorkTicker(ByVal sender As Object, ByVal e As System.EventArgs) If ValidationWorker.IsBusy Then Exit Sub End If DirectCast(sender, Windows.Threading.DispatcherTimer).Stop() ValidationWorker.RunWorkerAsync(_ValidationArgument) _ValidationArgument = Nothing End Sub
В Вашем фоновом цикле рабочего процесса необходимо проверить на
backgroundWorkerPageProcess.CancellationPending
и выход соответственно. Затем, после того как это существует, Ваш цикл с условием продолжения isBusy должен быть отмечен соответственно.
Обновление: после установки Отмены = верный, что Вы возвращаетесь из метода? spitballing здесь Обновление 2: Вы флаг WorkerSupportsCancellation установили на истинный на backgroundworker? Также в рабочем завершил возврат метода если e. Отмененный.... больше бумажных шариков
Обновление 3: после некоторой проверки и моей собственной компиляции кажется, что проклятая вещь никогда не выходит из isbusy в рамках того же метода. - одна опция состоит в том, чтобы отключить кнопку, в то время как занятый и имеют другого для отмены, только чтобы пользователь повторно нажал проверку. - или на Вашем рабочем завершил метод если (e. Отмененный), называют Ваш метод проверки с соответствующим текстом....
так или иначе вид промаха все же. Извините, что не помог здесь.
Попробуйте что-нибудь вроде этого:
bool restartWorker = false;
void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
// add other code here
if (e.Cancelled && restartWorker)
{
restartWorker = false;
backgroundWorker1.RunWorkerAsync();
}
}
private void button1_Click(object sender, EventArgs e)
{
if (backgroundWorker1.IsBusy)
{
restartWorker = true;
backgroundWorker1.CancelAsync();
}
else
backgroundWorker1.RunWorkerAsync();
}