Ok, when I killed the process it did NOT run again, so perhaps it is something to do with the cache.
I checked the core code and tried this:
SchedulingController schedulingController = new SchedulingController();
ScheduleItem proximtyMailerScheduleItem = schedulingController.GetSchedule("SmartThinker.DNN.Modules.UserProfile.UserProfileProximityMailerTask, SmartThinker.DNN.Modules.UserProfile", "");
proximtyMailerScheduleItem.Enabled = false;
proximtyMailerScheduleItem.NextStart = Null.NullDate;
DNNScheduler.Instance().UpdateSchedule(proximtyMailerScheduleItem);
DotNetNuke.Common.Utilities.DataCache.RemoveCache("ScheduleLastPolled");
UpdateSchedule in SchedulingProvider.vb seems to do some cache clearing and other stuff but I had no joy with the above code.
The only other thing I can think of is to grab all the ScheduledItemHistories by ScheduleID (it returns an arraylist) and get the last one and nullify the NextStart time and write it back but this seems very verbose.
Can anyone who knows the Scheduler comment on how to disable an item in code please?