小编Vis*_*ize的帖子

Task.Factory.StartNew与未捕获的异常杀死w3wp?

我只是转换我的一些网站的代码使用QueueUserWorkItemTask.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.这是一个错误的假设吗?

c# iis concurrency w3wp c#-4.0

12
推荐指数
1
解决办法
6287
查看次数

大型静态数组正在减慢类加载,需要更好/更快的查找方法

我有一个带有几个静态数组的类:

一个带有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

解决方案更新
我测试了我的原始双数组(比两个字典选项都快),后台线程初始化,这有助于提高性能.

然而,真正令人惊讶的是资源流中的二进制文件的运行情况.这是本主题中讨论的最快的解决方案.谢谢大家的回答!

c# unicode

4
推荐指数
2
解决办法
739
查看次数

标签 统计

c# ×2

c#-4.0 ×1

concurrency ×1

iis ×1

unicode ×1

w3wp ×1