 <p>Why do you use Task.Run? that start a new worker thread (cpu bound), and it causes your problem.</p> <p>you should probably just do that:</p> <pre><code> private async Task Run() { await File.AppendText("temp.dat").WriteAsync("a"); label1.Text = "test"; } </code></pre> <p>await ensure you will continue on the same context except if you use .ConfigureAwait(false);</p>