关于.net 中的多线程问题 对于多线程问题我理解太差,想从网上找些经典示例,但没找到!这些天正在做一个打字游戏。就是说,让字母随机从窗体的上边沿往下掉,然后进行打字,如果成功,就消失。希望大家帮帮忙!谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 线程参考http://blog.csdn.net/jinjazz/archive/2008/05/06/2397136.aspx 打字游戏这个例子不太典型。用单线程很好做,一个UI线程加一个IO线程也很好做,每个字母一个线程也可以。第二个还算沾边,前后两个都不是多线程练习的好例子。 using System;using System.Data;using System.Configuration;using System.Collections;using System.Collections.Generic;using System.Threading;using Model;namespace BLL{ public class SysCache { //用户缓存 public static Dictionary<string, UserService> UserCache = new Dictionary<string, UserService>(); public static bool ThreadStop = true; public static Thread oThreadUser; public SysCache() { //系统初始化时加载 CheckUser(); } /// <summary> /// 删除用户 /// </summary> private static void CheckUser() { oThreadUser = new Thread(new ThreadStart(DeleteOldUser)); oThreadUser.IsBackground = true; oThreadUser.Start(); } /// <summary> /// 每20分钟清理一次用户缓存 /// </summary> private static void DeleteOldUser() { ArrayList keys = new ArrayList(); do { Thread.Sleep(15000); keys.Clear(); foreach (KeyValuePair<string, UserService> kvp in SysCache.UserCache) { DateTime dCachetime = ((UserService)kvp.Value).Cachetime; TimeSpan ts = DateTime.Now - dCachetime; if (Convert.ToInt32(ts.Minutes) > 20) //超时时间20分钟 { keys.Add(kvp.Key); } } foreach (string key in keys) { SysCache.UserCache.Remove(key); } } while (ThreadStop == true); oThreadUser.Abort(); } }}参考之用: using System.Threading;Thread thread1 = new Thread(new ThreadStart(ThreadProc)); thread1.Start();public static void ThreadProc(){MessageBox.Show("测试成功");}当然这是一个非常非常简单的线程,但是你所说的功能 是可以通过多线程来处理的,希望对你有帮助 如何用c# winfrom做一个数据库设计软件? 求救!Winform下如何快速把datagrid中的大批量数据导入Excel中~ c# listview添加合计行 DataGridView控件在64位Win7下无法正常工作 IE6为何浏览Css 结果不一样? DataTable 批量更新数据 求教:邮件服务器的制作,主要是比如在别的邮箱发信.它怎么收?比如用tom.com发信我的服务器程序怎么接收? 这种程序该如何何调试 C#开发聊天室 关于这本书 C#裡dataview(),datagridview()顯示XML內容的問題 VS2005本地如何发布网站以及如何让内网的其他主机访问的问题
http://blog.csdn.net/jinjazz/archive/2008/05/06/2397136.aspx
用单线程很好做,一个UI线程加一个IO线程也很好做,每个字母一个线程也可以。
第二个还算沾边,前后两个都不是多线程练习的好例子。
using System.Data;
using System.Configuration;
using System.Collections;
using System.Collections.Generic;
using System.Threading;using Model;namespace BLL
{
public class SysCache
{
//用户缓存
public static Dictionary<string, UserService> UserCache = new Dictionary<string, UserService>(); public static bool ThreadStop = true; public static Thread oThreadUser; public SysCache()
{
//系统初始化时加载
CheckUser();
} /// <summary>
/// 删除用户
/// </summary>
private static void CheckUser()
{
oThreadUser = new Thread(new ThreadStart(DeleteOldUser));
oThreadUser.IsBackground = true;
oThreadUser.Start();
} /// <summary>
/// 每20分钟清理一次用户缓存
/// </summary>
private static void DeleteOldUser()
{
ArrayList keys = new ArrayList(); do
{
Thread.Sleep(15000);
keys.Clear();
foreach (KeyValuePair<string, UserService> kvp in SysCache.UserCache)
{
DateTime dCachetime = ((UserService)kvp.Value).Cachetime; TimeSpan ts = DateTime.Now - dCachetime; if (Convert.ToInt32(ts.Minutes) > 20) //超时时间20分钟
{
keys.Add(kvp.Key);
}
} foreach (string key in keys)
{
SysCache.UserCache.Remove(key);
} } while (ThreadStop == true); oThreadUser.Abort();
}
}
}
参考之用:
Thread thread1 = new Thread(new ThreadStart(ThreadProc));
thread1.Start();public static void ThreadProc()
{
MessageBox.Show("测试成功");
}
当然这是一个非常非常简单的线程,但是你所说的功能 是可以通过多线程来处理的,希望对你有帮助