For the sake of complete-ness, you can refresh all smartlists by sending a command to MC using the Windows PostMessage method.
Here's a couple of C# code segments... first you've got to declare the PostMessage method in your chosen class so you can use it (and also declare the MC constants you want to use);
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
public static extern bool PostMessage(IntPtr hWnd, uint Msg, uint wParam, uint lParam);
// MC specific constants
public const uint WM_MC_COMMAND = 33768;
public const uint MCC_REFRESH = 22007;
Then use the method to send the refresh command to MC;
PostMessage(new IntPtr(mc.GetWindowHandle()), WM_MC_COMMAND, MCC_REFRESH, 0);
Where
mc is your MCAutomation object.
This can be used for loads of other stuff, there's more info
here in the wiki.