C# Thread类常用的API

var thread = new Thread(() =>
{
    Console.WriteLine("dosomething");
});
开启一个新线程
thread.Start();

线程挂起,已经过期的方法
//thread.Suspend();
//thread.Resume();//线程恢复,已经过期的方法

终结线程,抛出一个异常
thread.Abort();
把终结的线程再次启动,会有延时
Thread.ResetAbort();

设置优先级,不能保证一定会优先执行,只是提升概率
thread.Priority = ThreadPriority.Highest;

为后台线程,线程随进程结束而结束
thread.IsBackground = true;

前台线程,进程结束后,任务执行完毕以后线程才结束
thread.IsBackground = false;

线程等待
1 ThreadState判断
while (thread.ThreadState!=ThreadState.Stopped)
{
    Thread.Sleep(200);
}

2 Join等待
thread.Join();//等待线程结束
thread.Join(200);//限时等待,最多等待200ms,超时就不等了


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用 SetForegroundWindow API 函数一次设置多个窗口为前台窗口是不支持的。因为操作系统只能将一个窗口设置为前台窗口,而且这个窗口必须属于当前活动的进程。如果您想同时将多个窗口设置为前台窗口,您需要模拟用户的键盘和鼠标操作,依次将每个窗口激活到前台。下面是一个示例代码: ```csharp using System.Runtime.InteropServices; using System.Threading; [DllImport("user32.dll")] [return: MarshalAs(UnmanagedType.Bool)] static extern bool SetForegroundWindow(IntPtr hWnd); [DllImport("user32.dll")] static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam); [DllImport("user32.dll")] static extern void mouse_event(uint dwFlags, uint dx, uint dy, uint dwData, UIntPtr dwExtraInfo); [DllImport("user32.dll")] static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, UIntPtr dwExtraInfo); const int WM_KEYDOWN = 0x100; const int WM_KEYUP = 0x101; const int VK_MENU = 0x12; const int VK_TAB = 0x09; const uint MOUSEEVENTF_LEFTDOWN = 0x0002; const uint MOUSEEVENTF_LEFTUP = 0x0004; static void SetForegroundWindows(List<IntPtr> handles) { foreach (IntPtr handle in handles) { // 模拟 Alt+Tab 切换窗口 keybd_event(VK_MENU, 0, 0, UIntPtr.Zero); keybd_event(VK_TAB, 0, 0, UIntPtr.Zero); Thread.Sleep(100); keybd_event(VK_TAB, 0, 0x0002, UIntPtr.Zero); keybd_event(VK_MENU, 0, 0x0002, UIntPtr.Zero); // 模拟鼠标点击激活窗口 SetForegroundWindow(handle); SendMessage(handle, WM_KEYDOWN, VK_TAB, 0); SendMessage(handle, WM_KEYUP, VK_TAB, 0); mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, UIntPtr.Zero); mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, UIntPtr.Zero); } } ``` 在这个示例代码中,SetForegroundWindow 函数用于将窗口设置为前台窗口,keybd_event 函数和 mouse_event 函数用于模拟键盘和鼠标操作。SetForegroundWindows 函数用于设置多个窗口为前台窗口,其参数为窗口句柄列表。这里模拟了 Alt+Tab 切换窗口和鼠标点击激活窗口的操作,通过循环依次将每个窗口激活到前台。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值