def Read(self, timeout=None):
        '''
        Reads the context menu
        :param timeout: Optional.  Any value other than None indicates a non-blocking read
        :return:
        '''
        # if not self.Shown:
        #     self.Shown = True
        #     self.TrayIcon.show()
        timeout1 = timeout
        # if timeout1 == 0:
        #     timeout1 = 1
            # if wx.GetApp():
            #     wx.GetApp().ProcessPendingEvents()
            # self.App.ProcessPendingEvents()
            # self.App.ProcessIdle()
            # return self.MenuItemChosen
        if timeout1 is not None:
            try:
                self.timer = wx.Timer(self.TaskBarIcon)
                self.TaskBarIcon.Bind(wx.EVT_TIMER, self.timer_timeout)
                self.timer.Start(milliseconds=timeout1, oneShot=wx.TIMER_ONE_SHOT)
            except:
                print('*** Got error in Read ***')
        self.RunningMainLoop = True
        self.App.MainLoop()
        self.RunningMainLoop = False
        if self.timer:
            self.timer.Stop()
        self.MenuItemChosen = self.TaskBarIcon.menu_item_chosen
        return self.MenuItemChosen
Reads the context menu
        :param timeout: Optional.  Any value other than None indicates a non-blocking read
        :return: