Q:

Как переделать метод в асинхронный (C#)

Как сделать метод Run() из SendStream.cs асинхронным или запуск sendStream.Run(); в Main.cs асинхронным? Цикл в методе должен работать бесконечно, return и break не предлагать.
Код: Main.cs
public MainWindow()
{
    InitializeComponent();
    SendStream sendStream = new SendStream();
    sendStream.Run();
}

Код: SendStream.cs
public class SendStream
    {
        private IPEndPoint ipEndPoint;
        private UdpClient _udpClient;
        private int width;
        private int height;
        private const UInt16 UdpSize = 65507;
        private const UInt16 ControlBlockSize = 5;
        private Random random = new Random();
        private byte lastA = 0;
        private byte lastB = 0;
        private float FPS = 60;

        public SendStream()
        {
            using (StreamReader streamReader = new StreamReader("ip.txt"))
            {
                string ip = streamReader.ReadLine();
                int port = Convert.ToInt32(streamReader.ReadLine());

                if (ip != null) ipEndPoint = new IPEndPoint(IPAddress.Parse(ip), port);
            }

            width = Screen.PrimaryScreen.Bounds.Width;
            height = Screen.PrimaryScreen.Bounds.Height;
        }

        public void Run()
        {
            _udpClient = new UdpClient();
            Bitmap backGround = new Bitmap(width, height);
            Graphics graphics = Graphics.FromImage(backGround);

            while (true)
            {
                System.Threading.Thread.Sleep((int) (1000 / FPS));
                graphics.CopyFromScreen(0, 0, 0, 0, new System.Drawing.Size(width, height));

                byte[] bytes = ConvertToByte(backGround); 
                List<byte[]> data = Package(bytes);

                foreach (var block in data)
                {
                    _udpClient.Send(block, block.Length, ipEndPoint);
                }
            }
        }
   ...
}

A:

Достаточно было сделать это))
Огромное спасибо @EvgeniyZ
Main.cs
SendStream sendStream = new SendStream();
await sendStream.Run();

SendStream.cs
public async Task Run()
        {
            _udpClient = new UdpClient();
            Bitmap backGround = new Bitmap(width, height);
            Graphics graphics = Graphics.FromImage(backGround);

            while (true)
            {
                await Task.Delay((int) (1000 / FPS)); //System.Threading.Thread.Sleep((int) (1000 / FPS));
                graphics.CopyFromScreen(0, 0, 0, 0, new System.Drawing.Size(width, height));

                byte[] bytes = ConvertToByte(backGround);
                List<byte[]> data = Package(bytes);

                foreach (var block in data)
                {
                    await _udpClient.SendAsync(block, block.Length, ipEndPoint);
                }
            }
        }

