0

我有一个带有事件 onchange 的文本框,它将文本的长度作为缓冲区。在我调用的回调函数中,MessageCallback我想将此缓冲区作为参数发送。但是,由于参数是在另一个线程中调用的方法内部传递的,因此缓冲区的属性不可用。我该如何解决这个问题?

想象一下我想要做什么,这里是我的代码片段:

    private int buflen = 1500;
    private int Buflen
    {
        get { return this.buflen; }
        set { this.buflen = value; }
    }


    private void MessageCallBack(IAsyncResult ar)
    {
        //this.Buflen = textMessage.Text.ToString().Length;
        //MessageBox.Show(this.buflen.ToString());
        try
        {
            this.Dispatcher.BeginInvoke(DispatcherPriority.Normal, new ThreadStart(() =>
                {
                    EndPoint epRemote = new IPEndPoint(IPAddress.Parse(textRemoteIp.Text), Convert.ToInt32(textRemotePort.Text));
                    MessageBox.Show(this.Buflen.ToString()); // returns 0 ?
                    int size = sck.EndReceiveFrom(ar, ref epRemote);

...

    private void textMessage_TextChanged_1(object sender, TextChangedEventArgs e)
    {
        this.Buflen = textMessage.Text.Length;
        MessageBox.Show(Buflen.ToString());
    }

那么我要问的是如何使属性Buflen在新创建的线程中可见?

4

1 回答 1

-1
  1. 使属性同步
  2. 公开财产
于 2013-09-30T08:56:11.950 回答