问题列表 - 第10311页

我是否需要同步对int的线程访问?

我刚刚编写了一个由多个线程同时调用的方法,我需要跟踪所有线程何时完成.代码使用此模式:

private void RunReport()
{
   _reportsRunning++;

   try
   {
       //code to run the report
   }
   finally
   {
       _reportsRunning--;
   }
}
Run Code Online (Sandbox Code Playgroud)

这是代码中唯一_reportsRunning值被更改的地方,该方法需要大约一秒钟才能运行.

偶尔当我有超过六个左右的线程一起运行报告时,_reportsRunning的最终结果可以降到-1.如果我换到电话_runningReports++_runningReports--一个锁,则行为似乎是正确的,一贯的.

所以,问题是:当我在C++中学习多线程时,我被教导你不需要同步调用递增和递减操作,因为它们总是一个汇编指令,因此线程不可能在中间切换-呼叫.我是否正确地教过,如果是这样的话,那对C#来说怎么回事?

c# c++ multithreading locking

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

Response.End()被认为是有害的吗?

这篇知识库文章说,ASP.NET Response.End()中止了一个帖子.

反射器显示它看起来像这样:

public void End()
{
    if (this._context.IsInCancellablePeriod)
    {
        InternalSecurityPermissions.ControlThread.Assert();
        Thread.CurrentThread.Abort(new HttpApplication.CancelModuleException(false));
    }
    else if (!this._flushing)
    {
        this.Flush();
        this._ended = true;
        if (this._context.ApplicationInstance != null)
        {
            this._context.ApplicationInstance.CompleteRequest();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这对我来说似乎很苛刻.正如知识库文章所说,以下应用程序中的任何代码Response.End()都不会被执行,这违反了最不惊讶的原则.它几乎就像Application.Exit()在WinForms应用程序中.造成线程终止异常Response.End()不开捕,所以代码周围的try...... finally不会满足.

这让我想知道我是否应该总是避免Response.End().

任何人都可以建议,我什么时候应该使用Response.End(),何时Response.Close()何地HttpContext.Current.ApplicationInstance.CompleteRequest()

参考:Rick Strahl的博客文章.


根据我收到的输入,我的回答是,是的,Response.End是有害的,但在某些有限的情况下它是有用的.

  • 使用Response.End()作为一个不可捕获抛出,立即终止HttpResponse在特殊的条件.在调试过程中也很有用. 避免Response.End()完成常规反应.
  • 用于Response.Close()立即关闭与客户端的连接.根据此MSDN博客文章,此方法不适用于正常的HTTP请求处理. 你不太可能有充分的理由来调用这种方法.
  • 用于 …

.net asp.net

197
推荐指数
5
解决办法
8万
查看次数

按Enter键移至下一个控件

我在WinForm上有几个TextBox.当按下Enter键时,我希望焦点移动到下一个控件?每当文本框获得控制权时,它也会选择文本,以便任何编辑都将替换当前文本.

做这个的最好方式是什么?

c# winforms

19
推荐指数
3
解决办法
9万
查看次数

加载.DLL文件并从类中访问方法?

在这样的图书馆加载我是全新的,但这就是我的立场:

我有一个自制的DLL文件,它就像它获得的一样简单,类本身和方法.在加载此库的主程序中,我有:

Assembly testDLL = Assembly.LoadFile("C:\\dll\\test.dll");
Run Code Online (Sandbox Code Playgroud)

从这里开始,我有点卡住了.据我所知,它正确加载它,因为它在我更改名称时给出了错误.

我该怎么办?我究竟如何加载其中的类和方法?

谢谢.

c# dll

26
推荐指数
2
解决办法
5万
查看次数

使用Python通过STDIN/STDOUT启动和控制外部进程

我需要启动一个外部进程,该进程通过stdin和stdout来回发送的消息进行控制.使用subprocess.Popen我能够启动进程但是无法根据需要通过stdin控制执行.

我想要完成的是:

  1. 启动外部流程
  2. 迭代了一些步骤
    1. 通过在其stdin中写入换行符来告诉外部进程完成下一个处理步骤
    2. 等待外部进程通过向其stdout写入换行符来表示已完成该步骤
  3. 关闭外部进程的stdin,向外部进程指示执行已完成.

到目前为止,我已经提出了以下建议:

process=subprocess.Popen([PathToProcess],stdin=subprocess.PIPE,stdout=subprocess.PIPE);
for i in xrange(StepsToComplete):
    print "Forcing step # %s"%i
    process.communicate(input='\n')
Run Code Online (Sandbox Code Playgroud)

当我运行上面的代码时,'\n'不会传递给外部进程,我永远不会超越第0步.代码在process.communicate()处阻塞,不再继续.我错误地使用communic()方法?

另外,我将如何实现"等待外部进程写入新行"功能?

python subprocess

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

有没有人知道Twitter的任何开源版本?

我在Twitter周围建立了一个GIS应用程序,现在它引起了一些兴趣.但其中一个要求是他们不需要任何外部依赖.所以我需要模仿Twitters的功能.

有人知道任何开源Twitter项目吗?

c# twitter open-source web-applications

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

虽然网站集不存在,但SPSite.Exists()返回true

我目前正在研究一种可以进行网站集管理的TimerJob.当作业运行时,它会查找列表以检索网站集的Url,然后调用SPSite.Exists()以检查该网站是否仍然存在.

为了测试TimerJob,我删除了一个网站集,但是在列表中留下了相应的条目.然后我启动TimerJob并在调试模式中逐步执行其代码.当涉及到检查站点是否存在的点SPSite.Exists()返回true.

当我第二次为同一网站集运行TimerJob时,该SPSite.Exists()方法返回false.

所以现在我想知道为什么SPSite.Exists()当我第一次运行这个工作时返回错误的结果.这可能是由缓存引起的吗?

当我在TimerJob之外运行相同的代码时,每次都SPSite.Exists()返回正确的结果.


UPDATE

所以我做了一些调试,看起来这个问题确实是由一些缓存机制造成的,因为在删除测试网站集之后和TimerJob启动之前重新启动Windows SharePoint Services定时服务时不会发生这种情况.

目前我无法想象另一种解决方案,而不是尝试访问已删除的网站并捕获将被抛出的异常,以确定该网站是否真的存在.


更新2

经过一些测试后,我意识到重新启动定时器服务后第一次调用SPSite.Exists()(在TimerJob中)时不会出现问题.第二次调用(针对不同的网站集)仍会导致已知问题.


更新3

目前我正在使用一个丑陋的黑客来解决我的问题.当SPSite.Exists()返回true但它实际上不存在时,我创建一个SPSite对象并尝试通过调用其Usage属性来激发FileNotFoundException.当异常出现时,我知道该网站不存在.抛出异常后奇怪的是,SPSite.Exists()返回正确的结果(false).

还有其他建议吗?

再见,弗洛

sharepoint timer-jobs

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

如何获取PHP函数的可用参数列表?

有没有办法获取PHP函数的可用参数?

示例:我想打电话function1($arg1, $arg2=null).在调用函数之前,如何找出此函数所使用的参数数量,如果可能的话,我可以找出哪些参数?

如您所见,我正在动态调用函数.

php

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

在unix中的多个文件上运行脚本

开始学习一些shell脚本.我有一个在一个文件上运行的perl脚本.我如何编写一个shell脚本,在所有带有关键字"filename"的文件上多次运行perl脚本?

所以在英语中,

for /filename/ in filenames  
    perl myscript.pl completefilename
Run Code Online (Sandbox Code Playgroud)

谢谢.

unix shell

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

有谁知道任何好的开源Geodjango应用程序要挖掘?

我想在业余时间建立一个小型GIS,并一直在挖掘Geodjango.

我一直试图找到开源Geodjango项目的例子,但我运气不好,所以我在这里.我已经浏览了大部分可以找到的教程,但它们似乎都停留在同一点上,我很想看一些更复杂的现实代码.

有人知道我能在哪里找到一些吗?任何东西都足够了,但使用Google Earth API而不是Open Layers的东西是理想的.

gis geodjango

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