I tried in my own way which works fine now. My BackgroundWorker thread creates a new thread and the created thread rather calls SqlConnection.Open(). When the cancel button is clicked, the BackgroundWorker thread aborts the thread opening the connection.
That's what the OpenAsync in 4.5 will do; open the query on a backgroundthread, polling it's status.
It works fine although I don't know if there could be any related problems.
Opening a connection can fail for multiple reasons, and exceptions aren't casted across the thread. You might want to make sure you have a good exception-handler in there; if you have the time, then it'd be mighty cool to have a "try connecting again" function - that way people won't have to relaunch the app after they found out that the database-server wasn't powered on.
Bastard Programmer from Hell
if you can't read my code, try converting it here[^]