Writing to file using TPL with ConcurrentQueue
Let’s try to get rid of ConcurrentQueue. And Task.Run – those are expensive ones. It also makes sense to use async file access – which is a way more lightweight.

public class LogWriter
{
    public static LogWriter Instance = new LogWriter();

    LogWriter()
    {
        Enabled = true;
        Cts = new CancellationTokenSource();
        Task = Task.CompletedTask;
    }

    bool Enabled { get; set; }
    CancellationTokenSource Cts { get; set; } 
    Task Task { get; set; }
    string Path =&gt; $"Log_{DateTime.Now:yyyyMMMdd}.txt";

    public void Start() =&gt; Enabled = true;

    public void Stop(bool discard = false)
    {
        Enabled = false;
        if (discard)
        {
            Cts.Cancel();
            Cts = new CancellationTokenSource();
            Task = Task.ContinueWith(t =&gt; { });
        }
    }

    public void Write(string line) =&gt;
        Write(line, Path, Cts.Token);

    void Write(string line, string path, CancellationToken token)
    {
        if (Enabled)
            lock(Task)
                Task = Task.ContinueWithAsync(
                    t =&gt; AppendAllTextAsync(path, line + NewLine, token),
                    token);
    }        
}


Where missing part would be:

static class AsyncContinuations
{
    public static async Task ContinueWithAsync(this Task task, Func&lt;Task, Task&gt; continuationFunction, CancellationToken cancellationToken)
    {
        await task;
        cancellationToken.ThrowIfCancellationRequested();
        await continuationFunction(task);
    }
}