ThreadAbstraction
using System;
using System.Threading;
using System.Threading.Tasks;
namespace Renci.SshNet.Abstractions
{
    internal static class ThreadAbstraction
    {
        public static void Sleep(int millisecondsTimeout)
        {
            Thread.Sleep(millisecondsTimeout);
        }
        public static Task ExecuteThreadLongRunning(Action action)
        {
            if (action == null)
                throw new ArgumentNullException("action");
            return Task.Factory.StartNew(action, CancellationToken.None, TaskCreationOptions.LongRunning, TaskScheduler.Current);
        }
        public static void ExecuteThread(Action action)
        {
            if (action == null)
                throw new ArgumentNullException("action");
            ThreadPool.QueueUserWorkItem(delegate {
                action();
            });
        }
    }
}