问题列表 - 第1005页

如何等待BackgroundWorker取消?

考虑一个对象的假设方法,为您做一些事情:

public class DoesStuff
{
    BackgroundWorker _worker = new BackgroundWorker();

    ...

    public void CancelDoingStuff()
    {
        _worker.CancelAsync();

        //todo: Figure out a way to wait for BackgroundWorker to be cancelled.
    }
}
Run Code Online (Sandbox Code Playgroud)

如何等待BackgroundWorker完成?


在过去,人们尝试过:

while (_worker.IsBusy)
{
    Sleep(100);
}
Run Code Online (Sandbox Code Playgroud)

但是这种死锁,因为IsBusyRunWorkerCompleted事件处理之后才会被清除,并且在应用程序空闲之前无法处理该事件.在工人完成之前,应用程序不会闲置.(另外,这是一个繁忙的循环 - 恶心.)

其他人已添加建议将其融入:

while (_worker.IsBusy)
{
    Application.DoEvents();
}
Run Code Online (Sandbox Code Playgroud)

这样做的问题是Application.DoEvents()导致当前队列中的消息被处理,这会导致重入问题(.NET不可重入).

我希望使用一些涉及事件同步对象的解决方案,其中代码等待事件 - 工作者的RunWorkerCompleted事件处理程序设置.就像是:

Event _workerDoneEvent = new WaitHandle();

public void CancelDoingStuff()
{
    _worker.CancelAsync();
    _workerDoneEvent.WaitOne();
}

private void RunWorkerCompletedEventHandler(sender object, …
Run Code Online (Sandbox Code Playgroud)

.net c# multithreading backgroundworker

119
推荐指数
3
解决办法
8万
查看次数

OpenID是如何实现的?

您将如何设计和实现OpenID组件?

(是"OpenId如何工作")

我意识到这个问题有点重复,是的,我已阅读规范维基百科的文章.

在阅读了上面提到的材料后,我仍然无法全面了解过程中每个步骤的处理方式.也许缺少的是一个关于OpenID实现如何工作的良好工作流程图.

我正在考虑将OpenID合并到我的一个应用程序中以容纳B2B单点登录方案,我可能会使用DotNetOpenID而不是尝试自己实现它,但我仍然希望在获得之前更好地掌握细节开始.

任何人都可以推荐能够很好地解释它的书籍或网站吗?在这个网站上有一个涵盖基础知识的答案也没有什么坏处.

[编辑]

我将标题更改为更具体的实现,因为显然有很多地方可以获得一万英尺的视图.

openid dotnetopenauth

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

存在哪些CLR/.NET字节码工具?

我非常了解用于操作,生成,反编译JVM字节码(ASM,cglib,jad等)的Java工具.CLR字节码有哪些类似的工具?人们为CLR做字节码操作吗?

.net clr il bytecode

7
推荐指数
3
解决办法
4885
查看次数

Php检查是否声明静态类

我如何检查是否已声明静态类?ex鉴于上课

class bob {
    function yippie() {
        echo "skippie";
    }
}
Run Code Online (Sandbox Code Playgroud)

稍后在代码中如何检查:

if(is_a_valid_static_object(bob)) {
    bob::yippie();
}
Run Code Online (Sandbox Code Playgroud)

所以我没有得到:致命错误:在第3行的file.php中找不到类'bob'

php static object

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

使用ASP.NET MVC的json请求的401响应代码

如何禁用AJAX/JSON请求的401响应代码(重定向到登录页面)的标准ASP.NET处理?

对于网页来说没关系,但对于AJAX,我需要获得正确的401错误代码而不是好看的302/200用于登录页面.

更新:来自ASP.NET MVC的PM的Phil Haack有几个解决方案 - http://haacked.com/archive/2011/10/04/prevent-forms-authentication-login-page-redirect-when-you-donrsquot -want.aspx

asp.net-mvc

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

如何删除类似const和非const成员函数之间的代码重复?

假设class X我想要返回内部成员的访问权限:

class Z
{
    // details
};

class X
{
    std::vector<Z> vecZ;

public:
    Z& Z(size_t index)
    {
        // massive amounts of code for validating index

        Z& ret = vecZ[index];

        // even more code for determining that the Z instance
        // at index is *exactly* the right sort of Z (a process
        // which involves calculating leap years in which
        // religious holidays fall on Tuesdays for
        // the next thousand years or so)

        return ret;
    }
    const …
Run Code Online (Sandbox Code Playgroud)

c++ const class code-duplication c++-faq

228
推荐指数
11
解决办法
3万
查看次数

您如何远程管理Web开发人员?

我是一个小型网络开发团队的领导者,我觉得我们很快就会有一些远程办公人员加入团队(新员工或现有员工将开始远程办公).任何想法如何有效地管理和远程工作的开发人员协作?

我们所做的大部分工作都是由客户驱动的.我们正在进行敏捷开发(或者我们的版本,无论如何),但由于它主要是客户端工作,我们无法真正为开发人员分配功能并将其设置为一两周,就像我们可以使用桌面应用程序或类似的东西.当人们偶尔在家工作时,我们遇到的最大问题是合作 - 如果没有白板和挥手的好处,很难一起工作.

看起来软件开发对于远程办公来说是完美的,但我无法在开发团队中远程工作的实际方面找到很多好的资源.有没有其他人有这方面的经验?

project-management

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

OOP是否可以完全避免实现继承?

我会选择Java作为一个例子,大多数人都知道它,尽管其他所有OO语言都可以正常工作.

与许多其他语言一样,Java具有接口继承和实现继承.例如,Java类可以从另一个继承,并且每个在其中具有实现的方法(假设父级不是抽象的)也是继承的.这意味着接口是继承的,也是此方法的实现.我可以覆盖它,但我没有.如果我不覆盖它,我继承了实现.

但是,我的类也可以"继承"(不是用Java术语)只是一个接口,没有实现.实际上接口实际上是用Java命名的,它们提供了接口继承,但没有继承任何实现,因为接口的所有方法都没有实现.

现在有这篇文章,说继承接口比实现更好,你可能想读它(至少在第一页的前半部分),这很有意思.它避免了脆弱的基类问题.到目前为止,这一切都很有意义,文章中说的许多其他内容对我来说很有意义.

让我感到困惑的是,实现继承意味着代码重用,这是OO语言最重要的属性之一.现在,如果Java没有类(如James Gosling,Java的教父希望根据本文),它解决了实现继承的所有问题,但是如何使代码重用成为可能呢?

例如,如果我有一个类Car和Car有一个方法move(),这会使Car移动.现在我可以为不同类型的汽车分类汽车,这些都是汽车,但都是汽车的专用版本.有些可能以不同的方式移动,这些需要覆盖move(),但大多数只会保留继承的移动,因为它们像抽象的父Car一样移动.现在假设在Java中只有接口,只有接口可以相互继承,一个类可以实现接口,但所有类都是final,所以没有类可以从任何其他类继承.

如果你有一个Interface Car和100个Car类,你需要为每个类实现相同的move()方法吗?OO世界中存在除了实现继承之外的代码重用的哪些概念?

有些语言有Mixins.Mixins是我问题的答案吗?我读到了它们,但我无法想象Mixins如何在Java世界中运行,以及它们是否真的可以在这里解决问题.

另一个想法是,有一个类只实现Car接口,让我们称之为AbstractCar,并实现move()方法.现在其他汽车也实现了Car接口,在内部他们创建了一个AbstractCar实例,他们通过在内部抽象Car上调用move()来实现自己的move()方法.但这不会浪费资源(一种方法只调用另一种方法 - 好吧,JIT可以内联代码,但仍然)并使用额外的内存来保存内部对象,你甚至不需要实现继承?(毕竟每个对象都需要更多的内存,而不仅仅是封装数据的总和)对于程序员来说,编写虚拟方法也不是很尴尬

public void move() {
    abstractCarObject.move();
}
Run Code Online (Sandbox Code Playgroud)

任何人都可以想象一个更好的想法如何避免实现继承,仍然能够以简单的方式重用代码?

java oop

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

在SQL Server 2008 Express数据库上记录所有查询?

有没有办法告诉SQL Server 2008 Express将每个查询(包括每个SELECT查询!)记录到一个文件中?

它是一台开发机器,因此记录Select-Queries的负面影响不是问题.

在有人建议使用SQL事件探查器之前:这在Express中不可用(有人知道它是否可以在Web版中使用?)而且我正在寻找一种方法来记录查询,即使我不在.

sql-server

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

如何让我的代码在多个核心上运行?

我在C#中构建了一个应用程序,我希望针对多个内核进行优化.我有一些线索,我应该做更多吗?

更新了更多细节

  • C#2.0
  • 在Windows Vista和Windows Server 2003上运行

再次更新

  • 此代码作为服务运行
  • 我不想拥有完整的代码......我的目标是获得您的经验以及如何开始.就像我说的,我已经使用过线程.我还能做什么?

c# multithreading multicore

18
推荐指数
5
解决办法
3万
查看次数