Is it ok to use "async" with a ThreadStart method? : <p>I have a Windows Service that uses Thread and SemaphoreSlim to perform some "work" every 60 seconds.</p>

<pre><code>class Daemon
{
    private SemaphoreSlim _semaphore;
    private Thread _thread;

    public void Stop()
    {
        _semaphore.Release();
        _thread.Join();
    }

    public void Start()
    {
        _semaphore = new SemaphoreSlim(0);
        _thread = new Thread(DoWork);
        _thread.Start();
    }

    private void DoWork()
    {
        while (true)
        {
            // Do some work here

            // Wait for 60 seconds, or exit if the Semaphore is released
            if (_semaphore.Wait(60 * 1000))                
            {
                return;
            }
        }
    }
}
</code></pre>

<p>I'd like to call an asynchronous method from <code>DoWork</code>. In order to use the <code>await</code> keyword I must add <code>async</code> to <code>DoWork</code>:</p>

<pre><code>private async void DoWork()
</code></pre>

<ol>
<li>Is there any reason not to do this?</li>
<li>Is DoWork actually able to run asynchronously, if it's already running inside a dedicated thread?</li>
</ol>
