我只是转换我的一些网站的代码使用QueueUserWorkItem到Task.Factory.StartNew
我有一些错误的代码抛出异常,它最终关闭w3wp.在Windows Server 2008 R2,x64上运行IIS 7.5
Task.Factory.StartNew(() =>
{
MethodThatThrowsException();
}
Run Code Online (Sandbox Code Playgroud)
应用程序:w3wp.exe Framework版本:v4.0.30319描述:由于未处理的异常,进程已终止.异常信息:System.AggregateException Stack:at System.Threading.Tasks.TaskExceptionHolder.Finalize()
例外:System.AggregateException
消息:通过等待任务或访问其Exception属性未观察到任务的异常.结果,终结器线程重新抛出了未观察到的异常.
StackTrace:在System.Threading.Tasks.TaskExceptionHolder.Finalize()
InnerException:System.Data.SqlClient.SqlException
我会假设一个例外会生成一个事件日志而没有杀死w3wp.这是一个错误的假设吗?
我有一个带有几个静态数组的类:
一个带有17,720个元素的int []一个带有17,720个元素
的字符串[]
我注意到当我第一次访问这个类时,初始化几乎需要2秒钟,这会导致访问它的GUI暂停.
具体来说,它是Unicode字符名称的查找.第一个数组是第二个数组的索引.
static readonly int[] NAME_INDEX = {
0x0000, 0x0001, 0x0005, 0x002C, 0x003B, ...
static readonly string[] NAMES = {
"Exclamation Mark", "Digit Three", "Semicolon", "Question Mark", ...
以下代码是如何使用数组(给定字符代码).[注意:此代码不是性能问题]
int nameIndex = Array.BinarySearch<int>(NAME_INDEX, code);
if (nameIndex > 0)
{
return NAMES[nameIndex];
}
我想我正在寻找关于如何构造数据的其他选项,以便1)快速加载类,2)我可以快速获得给定字符代码的"名称".
我不应该将所有这些数千个元素存储在静态数组中吗?
更新
感谢您的所有建议.我已经测试了一种词典方法,添加所有条目的表现似乎真的很差.
下面是一些代码与Unicode数据来测试阵列VS字典 http://drop.io/fontspace/asset/fontspace-unicodesupport-zip
解决方案更新
我测试了我的原始双数组(比两个字典选项都快),后台线程初始化,这有助于提高性能.
然而,真正令人惊讶的是资源流中的二进制文件的运行情况.这是本主题中讨论的最快的解决方案.谢谢大家的回答!