<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Process API | The .NET Blog</title><link>https://thedotnetblog.com/nl/tags/process-api/</link><description>Articles, tutorials and insights from the .NET community.</description><generator>Hugo</generator><language>nl</language><managingEditor>@thedotnetblog (The .NET Blog)</managingEditor><webMaster>@thedotnetblog</webMaster><lastBuildDate>Tue, 26 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://thedotnetblog.com/nl/tags/process-api/index.xml" rel="self" type="application/rss+xml"/><item><title>.NET 11 repareert eindelijk de Proces-API</title><link>https://thedotnetblog.com/nl/news/emiliano-montesdeoca/dotnet-11-process-api-improvements-runandcapturetext/</link><pubDate>Tue, 26 May 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/nl/news/emiliano-montesdeoca/dotnet-11-process-api-improvements-runandcapturetext/</guid><description>System.Diagnostics.Process krijgt zijn grootste update in jaren. RunAndCaptureTextAsync, KillOnParentExit, SafeProcessHandle-API's en volledige controle over standaard handle-omleiding — geen deadlock-boilerplate meer.</description><content:encoded>&lt;p&gt;Elke .NET-ontwikkelaar die ooit een proces moest starten en de uitvoer ervan moest vastleggen, heeft een variatie op dezelfde gevaarlijke boilerplate geschreven: async lezen van stdout, async lezen van stderr, &lt;code&gt;WaitForExitAsync&lt;/code&gt;, vergeet niet beide streams te leegmaken of je krijgt een deadlock. Het is een bekende val die al jaren bestaat.&lt;/p&gt;
&lt;p&gt;.NET 11 lost dit eindelijk goed op.&lt;/p&gt;
&lt;h2 id="runandcapturetextasync"&gt;RunAndCaptureTextAsync&lt;/h2&gt;
&lt;p&gt;De belangrijkste toevoeging: één enkele statische methode die een proces start, stdout en stderr vastlegt, en wacht op beëindiging zonder deadlock.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;Process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;RunAndCaptureTextAsync&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;dotnet&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;--version&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;WriteLine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;StandardOutput&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Één aanroep. Geen handmatig leegmaken van streams. Geen zorgvuldig geplaatste &lt;code&gt;WaitForExit&lt;/code&gt;. Als u gewoon iets wilt uitvoeren en de uitvoer wilt ontvangen, is dit de API die u wilt.&lt;/p&gt;
&lt;p&gt;Er is ook &lt;code&gt;Process.RunAsync&lt;/code&gt; voor het geval u wilt wachten op beëindiging zonder de uitvoer te vastleggen.&lt;/p&gt;
&lt;h2 id="killonparentexit"&gt;KillOnParentExit&lt;/h2&gt;
&lt;p&gt;Een veelvoorkomend probleem met gestarte processen: als het bovenliggende proces crasht of wordt beëindigd, blijven de onderliggende processen als wezen draaien. &lt;code&gt;KillOnParentExit&lt;/code&gt; stelt u in staat om bij het starten van het proces te declareren dat het onderliggende proces beëindigd moet worden wanneer het bovenliggende proces wordt beëindigd.&lt;/p&gt;
&lt;p&gt;Dit is een functie die op platformspecifieke manieren bestond (job objects op Windows, prctl op Linux) maar p/invoke of externe bibliotheken vereiste voor gebruik vanuit .NET. Nu is het een eersteklas eigenschap op &lt;code&gt;ProcessStartInfo&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id="safeprocesshandle-gebaseerde-apis"&gt;SafeProcessHandle-gebaseerde API&amp;rsquo;s&lt;/h2&gt;
&lt;p&gt;Het nieuwe lichtgewicht API-oppervlak is gebouwd rond &lt;code&gt;SafeProcessHandle&lt;/code&gt; in plaats van de volledige klasse &lt;code&gt;Process&lt;/code&gt;. De volledige klasse &lt;code&gt;Process&lt;/code&gt; draagt veel toestand met zich mee en is moeilijk te trimmen — het &lt;code&gt;SafeProcessHandle&lt;/code&gt;-pad is trimmer-vriendelijker voor toepassingen die de uitvoergrootte moeten minimaliseren (WASM, native AOT).&lt;/p&gt;
&lt;h2 id="volledige-controle-over-handle-erfenis"&gt;Volledige Controle over Handle-erfenis&lt;/h2&gt;
&lt;p&gt;De update voegt ook gedetailleerde controle toe over welke handles een onderliggend proces erft en hoe standaard handles worden omgeleid. Voorheen kon u stdin/stdout/stderr omleiden, maar kon u niet precies specificeren welke handles op OS-niveau geërfd worden. De nieuwe API&amp;rsquo;s stellen die controle bloot.&lt;/p&gt;
&lt;h2 id="waarom-dit-belangrijk-is"&gt;Waarom Dit Belangrijk Is&lt;/h2&gt;
&lt;p&gt;De klasse &lt;code&gt;Process&lt;/code&gt; wordt gebruikt in tooling, buildsystemen, testrunners en elke toepassing die andere uitvoerbare bestanden aanroept. Het oude API-oppervlak dateerde uit het .NET Framework-tijdperk en toonde zijn leeftijd. Dit is geen afbrekende wijziging — de oude API&amp;rsquo;s werken nog steeds — maar nieuwe code moet de voorkeur geven aan het nieuwe oppervlak.&lt;/p&gt;
&lt;p&gt;Voor getrimde toepassingen of AOT-compilatiescenario&amp;rsquo;s is het &lt;code&gt;SafeProcessHandle&lt;/code&gt;-pad bijzonder welkom. De oude klasse &lt;code&gt;Process&lt;/code&gt; bracht veel reflection-zwaar code mee dat het trimmen bemoeilijkte.&lt;/p&gt;
&lt;p&gt;Originele post: &lt;a href="https://devblogs.microsoft.com/dotnet/process-api-improvements-in-dotnet-11/"&gt;Process API Improvements in .NET 11&lt;/a&gt;&lt;/p&gt;</content:encoded></item></channel></rss>