public Task RunDataConnection()
{
var taskSource = new TaskCompletionSource<bool>();
SocketAsyncEventArgs acceptEventArgs = new SocketAsyncEventArgs();
acceptEventArgs.UserToken = taskSource;
acceptEventArgs.Completed += new EventHandler<SocketAsyncEventArgs>(acceptEventArgs_Completed);
if (!m_Listener.AcceptAsync(acceptEventArgs))
ProcessAccept(acceptEventArgs);
return taskSource.Task;
}