Ist es möglich, dispose() von nicht verwalteten Ressourcen in einem neuen Thread aufzurufen, ohne auf das Ergebnis zu warten? Ich habe eine asynchrone Funktion, die 2 nicht verwaltete Ressourcen verwendet. (rdKafka Produzent und Thema). Nach einigen Tests und der Zeitstempelmessung wurde mir klar, dass die Dispose-Funktion eine lange Zeit braucht, um fertig zu werden. Daher möchte ich die dispose() dieser Ressourcen in einem anderen Thread aufrufen und nicht auf sein Ergebnis "warten". Bedeutung, ich möchte das Ergebnis so schnell wie möglich bekommen und lassen einige Thread behandeln die dispose() wann immer.Wie können nicht verwaltete Ressourcen asynchron verteilt werden?
Hier ist mein Code:
public async Task<bool> ProduceMessage(object someobject)
{
var result = true;
using (var producer = new Producer(_kafkaOptions.Uri)) {
using (var topic = producer.Topic(_kafkaOptions.Topic, topicConfig)) {
var report = topic.Produce(someobject);
await report.ContinueWith(task =>
{
if (task.Status == TaskStatus.RanToCompletion) {
//if produce succeed and task completed, return true
_logger.LogDebug("Producer Succeed");
result = true;
} else {
HandleError(task);
result = false;
}
});
Nicht direkt auf Ihre Frage bezogen, aber Sie sollten nie async/await mit 'ContinueWith' mischen, es führt zu vielen Fehlern. [Sie sollten nur 'erwarten Bericht 'und haben den Code in' ContinueWith 'sein danach] (https://gist.github.com/leftler/2767460d2aa135aa80c9b123e517b51b). Auch bitte aktualisieren Sie Ihre Frage, um den Rest der Methode zu zeigen, es hilft uns, Antworten zu bilden. –
Entschuldigung, ich bin neu hier :) danke für den Kommentar – Shani