using System;
namespace System.ComponentModel
{
/// Provides a way to synchronously or asynchronously execute a delegate.
// Token: 0x02000093 RID: 147
public interface ISynchronizeInvoke
{
/// Gets a value indicating whether the caller must call when calling an object that implements this interface.
/// true if the caller must call ; otherwise, false.
// Token: 0x17000150 RID: 336
// (get) Token: 0x060004FD RID: 1277
bool InvokeRequired { get; }
/// Asynchronously executes the delegate on the thread that created this object.
/// An interface that represents the asynchronous operation started by calling this method.
/// A to a method that takes parameters of the same number and type that are contained in .
/// An array of type to pass as arguments to the given method. This can be null if no arguments are needed.
// Token: 0x060004FE RID: 1278
IAsyncResult BeginInvoke(Delegate method, object[] args);
/// Waits until the process started by calling completes, and then returns the value generated by the process.
/// An that represents the return value generated by the asynchronous operation.
/// An interface that represents the asynchronous operation started by calling .
// Token: 0x060004FF RID: 1279
object EndInvoke(IAsyncResult result);
/// Synchronously executes the delegate on the thread that created this object and marshals the call to the creating thread.
/// An that represents the return value from the delegate being invoked, or null if the delegate has no return value.
/// A that contains a method to call, in the context of the thread for the control.
/// An array of type that represents the arguments to pass to the given method. This can be null if no arguments are needed.
// Token: 0x06000500 RID: 1280
object Invoke(Delegate method, object[] args);
}
}