* **Electron Version:**
  * 5.0.0 beta 5
* **Operating System:**
  * Windows 10
* **Last Known Working Electron version:**:
  * ?

### Expected Behavior
`tray.popUpContextMenu()` should do nothing (and no harm) if the context menu is already showing.

### Actual Behavior
App crashes.

### To Reproduce
Example that calls popUpContextMenu twice:

main.js:

    const {app, Menu, Tray, nativeImage} = require('electron')

    function main () {
      tray = new Tray(nativeImage.createEmpty())
      tray.setContextMenu(Menu.buildFromTemplate([{ label: "Test" }]));
      setTimeout(() => tray.popUpContextMenu(), 3000)  
      tray.popUpContextMenu()
    }
atom/browser/ui/win/notify_icon.cc
NOTIFYICONDATA icon_data;
  InitIconData(&icon_data);
  
  Shell_NotifyIcon(NIM_DELETE, &icon_data);
  InitIconData(&icon_data);
  icon_data.uFlags |= NIF_MESSAGE;
  icon_data.uCallbackMessage = message_id_;
  icon_data.hIcon = icon_.get();
  
  
  if (icon_data.hIcon)
    icon_data.uFlags |= NIF_ICON;
  
  BOOL result = Shell_NotifyIcon(NIM_ADD, &icon_data);
  if (!result)
    LOG(WARNING) << "Unable to re-create status tray icon.";
}
void NotifyIcon::SetImage(HICON image) {
  icon_ = base::win::ScopedHICON(CopyIcon(image));
  
  NOTIFYICONDATA icon_data;
  InitIconData(&icon_data);
  icon_data.uFlags |= NIF_ICON;
  icon_data.hIcon = image;
  BOOL result = Shell_NotifyIcon(NIM_MODIFY, &icon_data);
  if (!result)
    LOG(WARNING) << "Error setting status tray icon image";
}
void NotifyIcon::SetPressedImage(HICON image) {