c# - 应用程序中的等待事件

标签 c# events

我想在我的 C# 项目中获取数据时等待事件。

当程序读取一些数据GetData 时,其他程序会在读取此数据结束时创建一个事件(调用EventForGetData)。 所以,我需要等待 EventForGetData 完成读取。

我为此任务编写了这段代码,但相信这段代码可能写得更优化。

        public static bool WaitEvent = true;
        public void EventForGetData(string variable)
        {
            WaitEvent = false;
        }

        public static string ForWaitGetData()
        {
            WaitEvent = true;
            while (WaitEvent)
            {
                System.Threading.Thread.Sleep(5);
                Application.DoEvents();                   
            }
            return Variable;
        }

        public object GetData(){
           // start read data
              ...
           // Wait for finish to read data 
           ForWaitGetData();

         // finish read data
              ...
          return MyObject;
       }

最佳答案

尝试使用任务,第一个任务是获取数据,最后进行处理或启动事件: 示例

Task task = Task.Factory.StartNew(() =>
            {
              //put you code here the first one 
            }).ContinueWith((rs) =>{
              //Launch your event or anything you want
            });

注意:您将放在 ContinueWith 中的代码将在您在 StartNew 中编写的代码之后执行。

关于c# - 应用程序中的等待事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36604746/

相关文章:

javascript - 在 HTML 中嵌入标记 - 我如何在 Javascript 中知道 .wav 文件已播放完毕?

macos - 处理 MonoMac 退出/窗口关闭事件

node.js - 获取错误 event.js :174 throw er; everytime I save any scss file

C# 正则表达式匹配字符串中的多个单词

c# - 关于C#中数组浅拷贝的问题

c# - 以编程方式触发 ASP.NET 控件事件的正确方法是什么?

c# - 从函数返回事件

c# - 带有 Api 版本控制的 CreatedAtRoute

c# - 如何使用 JsonConverter 在 System.Text.Json.JsonSerializer.Serialize() 中排除属性的序列化

c# - 使用 DynamicObject 模拟 DependencyProperties