我有一个表单(myForm)实例化一个类(myClass)。在myClass中,我异步读取了一个plc。异步读取使用两个方法myClass.BeginRead和myClass.OnAsyncReadComplete。 myItem.BeginRead接受一个asyncCallback和一个名为myItem的对象。当OnAsyncReadComplete触发时,我需要在myForm中调用一个设置文本框控件文本的方法。我特别需要帮助连接一个委托来设置在myForm中找回的控件。我打算使用if invoke来设置textbox.text属性。 我已经包含了myClass中两个方法的示例。
public void ReadPLCAsyc()
{
AsyncCallback asyncCallback = new AsyncCallback(this.OnAsyncReadComplete);
Result[] result;
Item[] itemArray = null;
this.myItem = null;
this.myItem = new ABLogix.Item(Config.ReadAppSettingsByKey("PLC_Tagname"));
this.myItem.Elements = 7;
this.myItem.HWTagName = Config.ReadAppSettingsByKey("PLC_Tagname");
this.myGroup.Items.Add(this.myItem);
this.myDevice.TimeoutTransaction = 2000;
itemArray = new AutomatedSolutions.Win.Comm.AB.Logix.Item[this.myDevice.Groups[0].Items.Count];
this.myDevice.Groups[0].Items.CopyTo(itemArray, 0);
this.myDevice.BeginRead(itemArray, out result, new AsyncCallback(this.OnAsyncReadComplete), this.myDevice);
}
public void OnAsyncReadComplete(IAsyncResult ar)
{
Device d = (Device)ar.AsyncState;
Result[] results;
try
{
d.EndRead(out results, ar);
var v = d.Groups[0].Items[0].Values;
**//Need to set myForm.textbox1.text = v.ToString();**
}
catch (Exception ex)
{
}
}
答案 0 :(得分:2)
使用此模式:
/me/username