Could SomeProperty get corrupted if I call SomeMethod() many times concurrently ?
Potentially, yes, though it depends on a lot of factors.
Writing a double is not guaranteed to be an atomic operation. Since you are calling this method concurrently, you could be writing the value concurrently, which could cause undefined behavior.
There are various mechanisms to handle this. Often, you only need to call the service once, in which case you can store the task directly:
Task<double> backing;
double SomeProperty { get { return backing.Result; } }
MyClass() // in constructor
{
backing = someService.SomeAsyncMethod(); // Note, no await here!
}
Otherwise, if you want multiple calls, an explicit lock
or other synchronization mechanism is likely the best approach.