将一个对象从一个线程传递到主线程的最佳方法是什么

时间:2017-11-08 18:10:56

标签: c# multithreading

我有一个小程序,可以监视Web套接字的变化。 更改后,它会抓取一个json文件并反序列化该对象。 执行此操作的线程将数据存储在类的实例中。

我想将包含所有新数据的对象传递给主线程中的方法。 所以我可以检查它的变化并将其写入文件。

将孔对象传递给主线程方法的最佳方法是什么?

public partial class MainWindow : Window

{

    public class JsonData
    {
        public  string[] Highlights { get; set; }
        public string[] Images { get; set; }
        public string Cur_carno { get; set; }
        public string Cur_desc { get; set; }
        public string Cur_bid_disp { get; set; }
        public string Message { get; set; }

    }

    public MainWindow()
    {
        InitializeComponent();
    }

    private void socketIoManager(string ip)
    {
     var socket = IO.Socket(ip);

            socket.On(Quobject.SocketIoClientDotNet.Client.Socket.EVENT_CONNECT, () =>
            {
                Console.WriteLine("Connected");
            });
      socket.On("_DATA", (data) =>
            {
                var Info = JsonConvert.DeserializeObject<JsonData>(data.ToString());

             // need to pass Info object to UpdateFeed()
            }
    }

    private void connect_click(object sender, RoutedEventArgs e)
    {
        socketIoManager(json_ip.Text);


    }

    private void UpdateFeed(object info)
    {

        // do stuff with info


        string json = JsonConvert.SerializeObject(info);

        //write string to file
        System.IO.File.WriteAllText(@"dataX.json", json);

     }
}

0 个答案:

没有答案