目录
一、使用Timer,固定时间弹出窗体
(一)Timer属性设置(如下图)
(二)使用Timer,自动弹出窗体代码
//===========================自动锁屏===========================
private static long mlngLockInterval_1 = 5;//锁屏时间,5分钟
[DllImport("user32.dll")]
private static extern bool GetLastInputInfo(ref LASTINPUTINFO plii);
/// <summary>
/// 超时锁定
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void timer1_Tick(object sender, EventArgs e)
{
try
{
long i = getIdleTick();
//执行锁屏
if (i > mlngLockInterval_1 * 60 * 1000)
{
LockBox frmLock = new LockBox();
frmLock.userName = userName;//传递用户名给窗体
timer1.Enabled = false;
frmLock.ShowDialog();
timer1.Enabled = true;
}
}
catch (Exception ex)
{
timer1.Enabled = false;
}
}
private long getIdleTick()
{
LASTINPUTINFO vLastInputInfo = new LASTINPUTINFO();
vLastInputInfo.cbSize = Marshal.SizeOf(vLastInputInfo);
if (!GetLastInputInfo(ref vLastInputInfo)) return 0;
return Environment.TickCount - (long)vLastInputInfo.dwTime;
}
private struct LASTINPUTINFO
{
[MarshalAs(UnmanagedType.U4)]
public int cbSize;
[MarshalAs(UnmanagedType.U4)]
public uint dwTime;
}
二、使用Timer,固定时间回收内存
(一)Timer属性设置(如下图)
(二)回收内存的方法(代码)
#region 内存回收
[DllImport("kernel32.dll", EntryPoint = "SetProcessWorkingSetSize")]
public static extern int SetProcessWorkingSetSize(IntPtr process, int minSize, int maxSize);
/// <summary>
/// 释放内存
/// </summary>
public static void ClearMemory()
{
GC.Collect();
GC.WaitForPendingFinalizers();
if (Environment.OSVersion.Platform == PlatformID.Win32NT)
{
SetProcessWorkingSetSize(System.Diagnostics.Process.GetCurrentProcess().Handle, -1, -1);
}
}
#endregion
(三)使用Timer,调用回收内存方法
private void timer2_Tick(object sender, EventArgs e)
{
ClearMemory();//内存回收
}
三、使用Timer,设置倒计时
代码如下:
TimeSpan dtTo = new TimeSpan(0,50,0); //设置开始时间
public Form1()
{
InitializeComponent();
}
private void timer1_Tick(object sender, EventArgs e)
{
dtTo = dtTo.Subtract(new TimeSpan(0, 0, 1));
label1.Text = dtTo.Hours.ToString() + ":" + dtTo.Minutes.ToString() + ":" + dtTo.Seconds;
if (dtTo.TotalSeconds < 0.0)//当倒计时完毕
{
timer1.Enabled = false; //其中可自行添加相应的提示框或者方法函数
}
}
private void Form1_Load(object sender, EventArgs e)
{
timer1.Interval = 1000;//设置每次间隔1s
timer1.Enabled = true;
}