炫意html5
最早CSS3和HTML5移动技术网站之一

请教:static静态方法中的new action用法

请教各位大侠:

public class UpdateUI
{
/// <summary>方法1
/// 更新Button的文字
/// </summary>
/// <param name="button">Button对象</param>
/// <param name="text">新文字</param>
public static void ButtonText(Button button, string text)
{
button.Invoke( new Action(() => button.Text = text));
}
/// <summary>方法2
/// 更新Button的背景色和文字
/// </summary>
/// <param name="button">Button对象</param>
/// <param name="backcolor">新背景色</param>
/// <param name="text">新文字</param>
public static void ButtonTextColor(Button button, Color backcolor, string text)
{
button.Invoke ( new EventHandler(delegate {
button.BackColor = backcolor;
button.Text = text;
}));
}
}

如上是我创建的一个类,我在该类中创建了两个静态static的方法,并在方法里使用了 Invoke( new Action….和new EventHandler(delegate…..,我的初衷是更新button的按钮文字和颜色,如果我的这两个方法被调用上万次,是不是会出现创建了(new)上万个action和n eventhandler呢?如果是这样,如何避免这样的问题呢? 处于自学摸索阶段,请大神们指点,谢谢

回答

上万个Action就上万个呗,又占不了多少内存,也不会有什么GC压力,一般UI也不会一秒更新上万次,完全可以不考虑这个东西。
另外如果是我的话,我会封装成这个样子

public static class FormControlExtensionMethods
{
    public static void Invoke(this Control control, Action action)
    {
        control.Invoke(action);
    }
}

用的时候就这样

button.Invoke(() =>
{
    button.BackColor = color;
    button.Text = text;
});

就是覆盖掉他本身的Invoke方法,日常使用足够了

炫意HTML5 » 请教:static静态方法中的new action用法

Java基础教程Android基础教程