using Cysharp.Threading.Tasks; namespace UVC.Event { /// /// ºñµ¿±â À̺¥Æ® 󸮸¦ À§ÇÑ Á¦³×¸¯ µ¨¸®°ÔÀÌÆ® /// UniTask¸¦ ¹ÝȯÇÏ´Â À̺¥Æ® Çڵ鷯¸¦ Á¤ÀÇÇÏ¿© ºñµ¿±â ÀÛ¾÷À» À̺¥Æ® ±â¹ÝÀ¸·Î ó¸®ÇÒ ¼ö ÀÖ°Ô ÇÔ /// /// À̺¥Æ® µ¥ÀÌÅ͸¦ Æ÷ÇÔÇÏ´Â Á¦³×¸¯ ŸÀÔ ¸Å°³º¯¼ö /// À̺¥Æ®¸¦ ¹ß»ý½ÃŲ °´Ã¼ /// À̺¥Æ®¿Í °ü·ÃµÈ µ¥ÀÌÅÍ /// ºñµ¿±â ÀÛ¾÷À» ³ªÅ¸³»´Â UniTask /// /// /// // À̺¥Æ® ¼±¾ð ¿¹½Ã /// public class NetworkManager /// { /// // UniTaskEventHandler ŸÀÔÀÇ À̺¥Æ® ¼±¾ð /// public event UniTaskEventHandler OnDataReceived; /// /// // À̺¥Æ® ¹ß»ý ¸Þ¼Òµå /// public async UniTask RaiseDataReceivedEvent(DataReceivedEventArgs args) /// { /// if (OnDataReceived != null) /// { /// // ¸ðµç µî·ÏµÈ Çڵ鷯¸¦ ¼øÂ÷ÀûÀ¸·Î ½ÇÇà /// foreach (var handler in OnDataReceived.GetInvocationList()) /// { /// await ((UniTaskEventHandler)handler).Invoke(this, args); /// } /// } /// } /// } /// /// // À̺¥Æ® ±¸µ¶ ¿¹½Ã /// public class DataProcessor /// { /// public void Initialize(NetworkManager networkManager) /// { /// networkManager.OnDataReceived += HandleDataReceived; /// } /// /// private async UniTask HandleDataReceived(object sender, DataReceivedEventArgs e) /// { /// // ºñµ¿±â À̺¥Æ® ó¸® ·ÎÁ÷ /// await ProcessDataAsync(e.Data); /// } /// /// private async UniTask ProcessDataAsync(byte[] data) /// { /// await UniTask.Delay(100); // ¿¹½Ã ºñµ¿±â ÀÛ¾÷ /// // µ¥ÀÌÅÍ Ã³¸® ·ÎÁ÷ /// } /// } /// /// public delegate UniTask UniTaskEventHandler(object sender, TEventArgs e); }