This is easily accomplished with a slightly different approach. In all reality, this happens all the time, doesn't it? Here's a simple solution to give you an option without doing something dumb:
public class MyResource
{
// do this instead of a constructor
public async Task StartAsync()
{
await Task.Delay(1);
return this;
}
}
public class MyControl
{
public MyResource Resource { get; set; }
async void Button_Click(object s, EventArgs e)
{
// call start as if it is a constructor
this.Resource = await new MyResource().StartAsync();
}
}