问题列表 - 第37272页

永远不会调用TaskScheduler.UnobservedTaskException

根据我的研究,我学到了以下内容:

  1. TaskScheduler.UnobservedTaskException必须等待该任务被垃圾收集,然后该任务的未被观察到的异常将冒泡到该UnobservedTaskException事件.
  2. 如果你正在使用Task.Wait()它,它永远不会被调用,因为你正在阻止来自Task的即将发生的结果,因此异常将被抛出Task.Wait()而不是冒泡到UnobservedException事件.
  3. GC.Collect()手动调用通常是一个坏主意,除非你确切地知道你正在做什么,因此在这种情况下确认事情是好的,但不能作为问题的正确解决方案.

问题

如果我的应用程序在垃圾收集器启动之前退出,我绝对100%无法UnobservedTaskException触发我的事件.

请注意以下代码:

class Program
{
    static void Main(string[] args)
    {
        TaskScheduler.UnobservedTaskException += TaskScheduler_UnobservedTaskException;

        Task.Factory.StartNew(() =>
        {
            Console.WriteLine("Task started.");
            throw new Exception("Test Exception");
        });

        Thread.Sleep(1000);
        //GC.Collect();
        //GC.WaitForPendingFinalizers();
    }

    static void TaskScheduler_UnobservedTaskException(object sender, UnobservedTaskExceptionEventArgs e)
    {
        File.WriteAllText(@"C:\data\TestException.txt", e.Exception.ToString());
        Console.WriteLine("UNOBSERVED EXCEPTION");
    }
}
Run Code Online (Sandbox Code Playgroud)

没有写入异常文件,也没有任何内容写入控制台.在应用程序退出后10-15分钟甚至更长时间可以继续,但我仍然看不到我的应用程序的遗骸被垃圾收集的证据.您可能会问,为什么不在退出时收集?好吧,我的真实场景是我的异常陷阱在Windows服务中托管的WCF服务内运行.当Windows服务关闭(因此手动调用GC.Collect())时,我无法陷阱,因为就我所见,没有任何事件.

我哪里错了?我如何确保如果WCF服务内部的某些内容最终会破坏我的Windows服务,那么我有机会在服务崩溃之前记录异常?

.net garbage-collection exception

13
推荐指数
2
解决办法
4401
查看次数

如何从C#App_Code类中获取当前页面的URL?

我有一个记录类,好吧,记录东西.我想添加自动使用消息记录当前页面的功能.

有没有办法获得我正在寻找的信息?

谢谢,

c# asp.net url

5
推荐指数
1
解决办法
6346
查看次数

删除python中的所有html?

有没有办法使用lxml.html删除/转义html标签而不是有一些xss问题的beautifulsoup?我尝试使用清洁,但我想删除所有的HTML.

python tags xss lxml

1
推荐指数
2
解决办法
5867
查看次数

更换不工作!

我有包含错误字符值的列?。现在我想把它改成 character b。为此,我使用以下语句:

SELECT REPLACE(name,'?','b') from contacts;
Run Code Online (Sandbox Code Playgroud)

但是当我这样做时什么也没有发生,它返回值?.

我做错了什么?我怎么能换这个?

sql t-sql sql-server-2005 sql-server-2008

2
推荐指数
3
解决办法
1万
查看次数

MATLAB交换两个不同矩阵的列

我使用matlab并且遇到了一些困难.我试图将一个矩阵(A)的列与另一个矩阵(B)的列交换.例如:

A =

 4     6     5  
 7     8     4     
 6     5     9    
 1     0     0     
 0     1     0     
 0     0     1     
Run Code Online (Sandbox Code Playgroud)

B =

 1     0     0     0     0     0
 0     1     0     0     0     0
 0     0     1     0     0     0
 0     0     0    -1     0     0
 0     0     0     0    -1     0
 0     0     0     0     0    -1
Run Code Online (Sandbox Code Playgroud)

有没有办法告诉Matlab切换,例如,A中的第1列和B中的第3列?

matlab

3
推荐指数
2
解决办法
1835
查看次数

c ++ std中的字符串类是如何工作的?

我担心我不知道模板(或C++,真的),但我知道算法和数据结构(甚至一些OOP!:).无论如何,为了使问题更加精确,请考虑我希望成为答案的一部分(其中我不提前知道).

  1. 为什么它被编码为模板?
  2. 模板如何工作?
  3. 它是如何进行内存分配的?
  4. 为什么(不是)比仅仅空终止的char数组更好?

c++ std

8
推荐指数
2
解决办法
6234
查看次数

sinatra应用程序无法启动

我在Ubuntu 10.10/Ruby 1.9.2上

无论我做什么,我都无法在本地机器上启动sinatra应用程序.

hello.rb的:

require 'sinatra'
get '/' do
  "Hello World!"
end
Run Code Online (Sandbox Code Playgroud)

"$ ruby​​ hello.rb"和"$ ruby​​ -rubygems hello.rb"都会导致新的提示,不执行任何操作.

任何提示或指示?

ruby sinatra

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

如何在LISP中交换2个列表中的元素?

给定2个列表,如何生成第3个列表的输出,该列表的元素为L1和L2的交错集合?如果长度不均匀,则应插入零孔.在第二个注释中,我如何反转列表?我是LISP的新手,只是修改现有的代码......我真的很想得到一个很好的解释,而不仅仅是代码.

common-lisp

4
推荐指数
1
解决办法
3777
查看次数

PHP文件上传,安全吗?

这就是我希望用户能够:

  • 将任何文件上载到上传文件夹的服务器(附件)
  • 之后能够下载它

所以我用以下.htaccess创建了这个目录

Allow from all
DirectoryIndex .x
php_flag engine off
Options -Indexes
Options -ExecCGI
AddType text/plain .html .htm .shtml .php .php3 .php5 .phtml .phtm .pl .py .cgi
ForceType applicaton/octet-stream
Run Code Online (Sandbox Code Playgroud)

我的问题是,这是安全的吗?

php apache security upload

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

从[SomePaymentProcesingCompany]汇款到银行账户

假想情景:

联盟会员通过向客户销售商品/服务/小部件来在我的网站上赚钱.您可以将其视为一个简单的联盟计划.这笔钱存储在一个帐户中,直到会员请求他们的钱.

关联公司不想等待支票来邮件; 他们想登录他们的管理部门(在我的网站上),然后点击神奇的"转移我的硬挣钱现在!傻瓜"按钮,并将他们的数百万美元直接存入他们的银行账户(此转账可能需要"3-4天"如果必须---联盟会员只是想让他们觉得他们总能控制自己的钱".

现在,PayPal已经做了"现在发送我的挣钱!傻瓜." 功能很好.他们的API甚至允许从一个Paypal账户转账到另一个账户; 它只是不允许存款到银行账户.联盟会员很懒,不想登录他们的Paypal账户来转账.


那么,开发人员可以做些什么呢?

  • 我不想打扰存储信用卡信息(PCI合规......不,谢谢).
  • 我真的不想直接与银行整合
  • 我想(在psudeo代码中):

.

// affiliate and crdentials are pulled from my database.
Affiliate affiliate = db.Affiliates.GetByID(123456);
Credentials creds = affiliate.GetBankCredentials();
// paymentAPI is, well, its an API.
Xml response = paymentAPI.InitiateMoneyTransfer({from: myAccountCrdentials, to: creds, amount: 123, currency: "USD"});
if(response.success){
    print "Bling Bling! Transfer initiated";
}
else{
    print response.msg;
}
Run Code Online (Sandbox Code Playgroud)

ps我在美国

c# language-agnostic currency payment-gateway payment-processing

6
推荐指数
1
解决办法
3185
查看次数