Should yes/no dialogs also have a cancel?

I remember once reading an article that said whenever you present a messagebox with a Yes/No choice, you should always also provide a Cancel button, even if it does the same as No.

The rationale was that if the users know that Cancel is always the "safe" button to click if they don't understand why the message box was displayed, or are confused by the question.

mockup

download bmml source – Wireframes created with Balsamiq Mockups

I've followed this advice for years (even though I can no longer remember where I originally heard it), but a number of people have complained about it, saying that they would prefer a simple Yes/No.

So now I am wondering whether it is (or ever was) in fact best practice. If a message box presents a Yes/No choice, should it also offer Cancel (in the case where Cancel and No have the same effect)?