Here is some boiler plate code to set up active view events. You'll just need to write a function that checks if the item added is a shapefile. Call that function from Events_ItemAdded().
public static IActiveViewEvents_Event ActiveViewEvent;
private void WireDocumentEvents()
// Event handlers
I found the issue. The main thread for the test project I had set up for this functionality was an MTA (Multi Threaded Apartment) thread. Simply calling everything from an STA (Single Threaded Apartment) thread caused the issue to go away.
Thread t = new Thread(x => ...) //call projection code here
This is from working code, in this example 'timer save' a window pops up when a time has elapsed reminding the user to save, so I only use OnStartEditing and OnStopEditing events; It is important to note that this occurs in the form load event as there is an attached form:
private void TimerSaveForm_Load(object sender, EventArgs e)
vSaveEditsWarn = ...