It's typically never a good idea to do something in your constructor that is not directly related to creating the object instance. For example, if I didn't know the purpose of your MyObject
class, I might not know that it spawns an asynchronous process when I create a new instance. That's generally a bad practice.
It almost sounds like you're saying; hey, create this object, and it's only going to be usable when this async process is finished; that's counter-intuitive.
If you want to do something like this, I would think you would be definitely served better by going to a factory pattern; you call a factory like so and it will create the object and call the method for you:
var instance = MyObjectBuilder.CreateInstance();
// Internally, this does
// var x = new MyObject();
// x.Initilizatize();
// return x;
If your object wont be usable until it's been finished initializing, then you should probably expose a property to check if it is ready, like so:
instance.WaitForReady(); // blocking version
if(instance.IsReady) // non blocking check