ms-wordinteropms-officevstocomaddin

Order of events reversed 'Ribbon_Load' and 'ThisAddin_Startup' Word VSTO Add-in. (Build 8201.2025 onwards)


As of Build 8201.2025 there has been an unexpected change to the order of events when loading a VSTO addin with a Ribbon in Word.

Ribbon_Load event

ThisAddin_Startup event

ThisAddin_Startup event

Ribbon_Load event

>

Public Class Ribbon1
    Private Sub Ribbon1_Load(ByVal sender As System.Object, ByVal e As RibbonUIEventArgs) Handles MyBase.Load

        System.Diagnostics.Debug.Write("Ribbon1_Load event called.")

        'Pass the Ribbon to the Addin.

        ThisAddIn.MyRibbon = Me

    End Sub
End Class

Public Class ThisAddIn

Public Shared Property MyRibbon As Ribbon1 = Nothing

    Private Sub ThisAddIn_Startup() Handles Me.Startup
        Debug.Write("ThisAddin_Startup Called")

        If (MyRibbon Is Nothing) Then
            Debug.Write("MyRibbon is nothing - the ribbon was not captured.")
        Else
            Debug.Write("Ribbon captured successfully.")
        End If

    End Sub
End Class

I have posted this up on the Microsoft Support forums however they have stopped responding and since released this version to the Current office channel I need help from the dev community.

Has anyone found a successful workaround? This change of timing is causing alot of problems with how we initialise. It would be ideal for Microsoft Support to provide a solution or workaround until they investigate this bug.


Solution

  • Hope this helps someone! We used the following workaround successfully to work around the changed office load behavior.

    Within ThisAddIn_Startup loop until the Ribbon load event has fired and the ribbon is captured.

     While m_oRibbon Is Nothing
            If (timeWaited >= MAX_WAIT_TIME) Then
                Exit Try
            End If
    
            Threading.Thread.Sleep(50)
            timeWaited = timeWaited + 50
     End While