English 中文(简体)
代表席
原标题:Query on Delegates

我走过一条守则,使用Begin Invoke某种方式更新标签文本,我发现这奇怪,我无法理解为什么有些人会这样做。

如果我想利用校对来使用户有好的经验,我将在新读物中使用透镜,更新标签。 起始净额。 我为什么会采用以下做法?

如果你可以告诉我,采用这一特殊做法会有什么好处。

    public delegate void loadCustomersDelegate();
    private delegate void updateLabelDelegate(Label lb, string text);
    public void updateLabel(Label lb, string text)
    {
        lb.Text = text;
    }
    public void loadCustomerDetails()
    {
        loadCustomersDelegate del = new loadCustomersDelegate(loadCustomerDetailsAction);
        IAsyncResult res = del.BeginInvoke(null, null);

        while (!res.IsCompleted)
        {
        }

    }
    public void loadCustomerDetailsAction()
    {
            BeginInvoke(new updateLabelDelegate(updateLabel), new object[] { lblCustomerName, resp.AddressItems[0].ADName.ToString() });
            BeginInvoke(new updateLabelDelegate(updateLabel), new object[] { lblAddress1, resp.AddressItems[0].AD1.ToString() });
            BeginInvoke(new updateLabelDelegate(updateLabel), new object[] { lblAddress2, resp.AddressItems[0].AD2.ToString() });
            BeginInvoke(new updateLabelDelegate(updateLabel), new object[] { lblAddress3, resp.AddressItems[0].AD3.ToString() });
            BeginInvoke(new updateLabelDelegate(updateLabel), new object[] { lblAddress4, resp.AddressItems[0].ADCode.ToString() });
            BeginInvoke(new updateLabelDelegate(updateLabel), new object[] { lblPCode, resp.AddressItems[0].PCode.ToString() });
            BeginInvoke(new updateLabelDelegate(updateLabel), new object[] { lblTelephone, resp.AddressItems[0].Tele.ToString() });
            BeginInvoke(new updateLabelDelegate(updateLabel), new object[] { lblFax, resp.AddressItems[0].Fax.ToString() });
            BeginInvoke(new updateLabelDelegate(updateLabel), new object[] { lblSLCode, resp.AddressItems[0].SLCode.ToString() });
            BeginInvoke(new updateLabelDelegate(updateLabel), new object[] { lblSLBalance, "£" + resp.AddressItems[0].SLBalance.ToString() });
            BeginInvoke(new updateLabelDelegate(updateLabel), new object[] { lblSLMonthsOld, resp.AddressItems[0].SLMonthsOld.ToString() });
            BeginInvoke(new updateLabelDelegate(updateLabel), new object[] { lblSLCreditRating, "£" + resp.AddressItems[0].SLCreditRating.ToString() });
    }

<>Update>

我写了一封信,将这种做法与其他方式进行比较。 在以欺骗方式管理申请时,我发现错误“Invoke或BeginInvoke在“CustDetails”方法中的第一个Begin Invoke”的窗口操作之前不能被控制。 虽然如此,在操作守则时没有发生任何错误。 任何想法?

我的法典如下:

public delegate void UpdateLabelDelegate(Label lb, string text);
public delegate void loadCustomersDelegate();

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();

        loadCustomersDelegate del = new loadCustomersDelegate(UpdateCustDetails);
        IAsyncResult ar = del.BeginInvoke(null, null);

        while (!ar.IsCompleted)
        {
        }

    }

    public void updateLabel(Label lb, string text)
    {

        lb.Text = text;

    }

    public void UpdateCustDetails()
    {
        BeginInvoke(new UpdateLabelDelegate(updateLabel), new object[] { label1, "Test" });
        BeginInvoke(new UpdateLabelDelegate(updateLabel), new object[] { label2, "Test1234" });
        BeginInvoke(new UpdateLabelDelegate(updateLabel), new object[] { label3, "Test5678" });
        BeginInvoke(new UpdateLabelDelegate(updateLabel), new object[] { label4, "Test0000" });
    }
}

Thanks, Abhi.

最佳回答

当你分配拉贝尔文本财产时,有大量的法典。 无论是在互联网框架还是在Windows本身。 视窗表格的真.不强迫你写这种代码,甚至看它。 但是,现在还有大量法典的黄金规则是,它远远没有read。 世界上没有全球倡议框架。 冷硬的统治是,你must只触及了控制产生它的read的特性。 什么是控制。 Begin/Invoke()帮助你。

然而,你最后说的是很令人怀疑的。 每张个人标签都没有好处。 你们只需要一种单一的方法,即所有标签。 这不仅会更清洁,而且会大大降低成本。 您的代表声明,请考虑

 private delegate void updateLabelsDelegate(Mumble resp);

M.B.M.是“地址”要素的类别。 采用背景工人班,通常使你能够自动制定类似守则。 建议。

问题回答

你们必须更新其 own子的控制,否则,你就有一个临时例外,这就是为什么该法典使用BeginInvoke。 确实没有任何好处,这只是你必须做些什么。 NET 高兴:





相关问题
Anyone feel like passing it forward?

I m the only developer in my company, and am getting along well as an autodidact, but I know I m missing out on the education one gets from working with and having code reviewed by more senior devs. ...

NSArray s, Primitive types and Boxing Oh My!

I m pretty new to the Objective-C world and I have a long history with .net/C# so naturally I m inclined to use my C# wits. Now here s the question: I feel really inclined to create some type of ...

C# Marshal / Pinvoke CBitmap?

I cannot figure out how to marshal a C++ CBitmap to a C# Bitmap or Image class. My import looks like this: [DllImport(@"test.dll", CharSet = CharSet.Unicode)] public static extern IntPtr ...

How to Use Ghostscript DLL to convert PDF to PDF/A

How to user GhostScript DLL to convert PDF to PDF/A. I know I kind of have to call the exported function of gsdll32.dll whose name is gsapi_init_with_args, but how do i pass the right arguments? BTW, ...

Linqy no matchy

Maybe it s something I m doing wrong. I m just learning Linq because I m bored. And so far so good. I made a little program and it basically just outputs all matches (foreach) into a label control. ...

热门标签