I searched in google for a method which allows me to display a label for a specific time and I found this :

```
public void InfoLabel(string value)
        {
            if (InvokeRequired)
            {
                this.Invoke(new Action<string>(InfoLabel), new object[] { value });
                return;
            }
            barStaticItem3.Caption = value;

            if (!String.IsNullOrEmpty(value))
            {
                System.Timers.Timer timer = new System.Timers.Timer(6000) { Enabled = true };
                timer.Elapsed += (sender, args) =>
                {
                    this.InfoLabel(string.Empty);
                    timer.Dispose();
                };
            }

        }

```

I really can't understand this method specially :

-Why we used : `InvokeRequired` ?

-What this method for : `this.Invoke()` ?

-What this is for :`new Action<string>(InfoLabel)` ?

-Why we used that sign : `=>` ?