问题列表 - 第32171页

C#在真实世界的应用中进行线程化

毫无疑问,了解线程是非常有趣的,并且有一些非常好的资源可以做到这一点.但是,我的问题是在实际应用程序中将线程明确地应用为设计或开发的一部分.

我已经在C#中使用了一些广泛使用且架构良好的.NET应用程序,但没有发现明确使用的痕迹.由于这是由CLR管理还是有任何特定原因,没有真正的需要?

此外,任何在广泛使用的.NET应用程序中编码的线程示例.在Codelplex或Gooogle Code也欢迎.

c# multithreading codeplex

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

WinINet异步模式灾难

对不起这么长的问题.我只是花了好几天试图解决我的问题,而且我已经筋疲力尽了.

我正在尝试以异步模式使用WinINet.我必须说......这简直就是疯了.我真的无法理解这一点.它做了很多事情,但遗憾的是它的异步API设计得非常糟糕,以至于它不能用于具有高稳定性要求的严肃应用程序.

我的问题如下:我需要连续进行大量的HTTP/HTTPS事务,而我还需要能够在请求时立即中止它们.

我将按照以下方式使用WinINet:

  1. 通过InternetOpen带有INTERNET_FLAG_ASYNC标志的函数初始化WInINet用法.
  2. 安装全局回调函数(via InternetSetStatusCallback).

现在,为了执行我想做的事务:

  1. 使用描述事务状态的各种成员分配每事务结构.
  2. 致电InternetOpenUrl发起交易.在异步模式下,它通常会立即返回错误,即ERROR_IO_PENDING.其中一个参数是'context',它将传递给回调函数.我们将其设置为指向每个事务状态结构的指针.
  3. 在此之后不久,将调用具有status的全局回调函数(来自另一个线程)INTERNET_STATUS_HANDLE_CREATED.此时我们保存WinINet会话句柄.
  4. 最终INTERNET_STATUS_REQUEST_COMPLETE在事务完成时调用回调函数.这允许我们使用一些通知机制(例如设置事件)来通知原始线程事务已完成.
  5. 发出事务的线程意识到它已完成.然后它执行清理:关闭WinINet会话句柄(by InternetCloseHandle),并删除状态结构.

到目前为止似乎没有问题.

如何中止正在执行的事务?一种方法是关闭相应的WinINet句柄.而且由于WinINet没有这样的功能InternetAbortXXXX- 关闭句柄似乎是唯一的中止方式.

确实这很有效.这样的事务立即完成ERROR_INTERNET_OPERATION_CANCELLED错误代码.但是这里所有的问题都开始了......

我所遇到的第一个令人不快的意外的是,往往的WinINet有时调用回调函数,即使是交易后,它已被中止.根据MSDN,它INTERNET_STATUS_HANDLE_CLOSING是回调函数的最后一次调用.但这是谎言.我看到的是,有时会有INTERNET_STATUS_REQUEST_COMPLETE相同句柄的后续通知.

我还尝试在关闭之前禁用事务句柄的回调函数,但这没有帮助.似乎WinINet的回调调用机制是异步的.因此 - 它甚至可以在事务句柄关闭后调用回调函数.

这就产生了一个问题:只要WinINet 可以调用回调函数 - 显然我无法释放事务状态结构.但是我怎么知道WinINet是否会这么称呼它呢?从我看到的 - 没有一致性.

不过我已经解决了这个问题.相反,我现在保留一个分配的事务结构的全局映射(当然是受关键部分保护).然后,在回调函数内部,我确保事务确实存在并在回调调用期间锁定它.

但后来我发现了另一个问题,到目前为止我无法解决.当我在交易开始后不久中止交易时就会出现这种情况.

发生的是我调用InternetOpenUrl,它返回ERROR_IO_PENDING错误代码.然后我只是等待(通常很短),直到INTERNET_STATUS_HANDLE_CREATED通知调用回调函数.然后 - 保存事务句柄,现在我们有机会在没有句柄/资源泄漏的情况下中止,我们可以继续.

在这一刻之后,我试图完全中止.也就是说,收到后立即关闭此手柄.猜猜会发生什么?WinINet崩溃,内存访问无效!这与我在回调函数中做的任何事情无关.甚至没有调用回调函数,崩溃在WinINet内部的某个地方.

另一方面,如果我等待下一个通知(例如'解析名称') - 通常它会起作用.但有时崩溃也是如此!如果我Sleep在获得句柄和关闭它之间放一些最小的问题似乎消失了.但显然这不是一个严肃的解决方案. …

c c++ windows networking wininet

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

MVVM-light + RIA服务最佳实践

我想开始一系列MVVM-light(w/RIA Services)最佳实践.我发现有很多项目是有用的最佳实践或最佳方法,但是希望听到其他人使用MVVM-light工具包并查看他们发现的内容.

请将您的最佳做法发布为此问题的答案.

silverlight wcf-ria-services mvvm-light

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

HTML5中的画布:删除先前的矩形

我一直在搞弄html5中的canvas元素,这是经过一些试验后得到的结果

function canvasMove(e) {

    var canvas = document.getElementById('game');

    if(canvas.getContext) {
        var draw = canvas.getContext('2d');

        draw.fillStyle = 'rgba(0,0,0,0.5)';
        draw.fillRect('10', '10', '100', '100');    

        var code;

        if (!e) var e = window.event;
        if (e.keyCode) code = e.keyCode;
        else if (e.which) code = e.which;
        var character = String.fromCharCode(code);

        if(character == '&') { draw.translate(0, -10); }
        if(character == '(') { draw.translate(0, 10); }
        if(character == '%') { draw.translate(-10, 0); }
        if(character == "'") { draw.translate(10, 0); }
    }
}
Run Code Online (Sandbox Code Playgroud)

它的作用是每当您按箭头键时都会移动矩形[箭头键显示为&,(,%和',不确定每个人是否都一样,但这只是一个实验]。无论如何,我可以移动矩形周围,但是会留下某种残留物,因为它不会删除它以前的形式,所以我得到的是使用非常厚的笔刷进行的非常基本的etch-n'-sketch。

我想要做的是能够删除矩形的先前形式,以便仅保留新的翻译版本。

最重要的是,我想知道如何通过同时按下向左和向上来使其水平移动。我知道我的代码可能不是很通用,但是任何帮助我们都非常感谢。

谢谢 :)

javascript html5 canvas

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

在C++中声明"全局"变量时,"静态"到底意味着什么?

这是我前一个问题范围的扩展.

什么是"静态",它是如何使用的,以及在处理C++时使用"静态"的目的是什么?

谢谢.

c++ static static-variables

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

外变量陷阱

外部变量陷阱究竟是什么?感谢C#中的解释和示例.

编辑:纳入Jon Skeet的diktat :)

Eric Lippert关于外部变量陷阱

c# linq

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

wordpress测试网站进入主站点网址...如何解决?

例如,我有一个实时WP网站http://wpsite.com

我想在http://wpsite.com/test/上制作http://wpsite.com的实时镜像副本

所以我将public_html /文件夹的所有数据复制到public_html/test /

然后我检查了http://wpsite.com/test/,但一切都将转到http://wpsite.com/

有没有.htaccess问题?

这是.htaccess at public_html /

# BEGIN WPSuperCache
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
AddDefaultCharset UTF-8
RewriteCond %{REQUEST_METHOD} !POST
RewriteCond %{QUERY_STRING} !.*=.*
RewriteCond %{HTTP:Cookie} !^.*(comment_author_|wordpress|wp-postpass_).*$
RewriteCond %{HTTP_USER_AGENT} !^.*(2.0\ MMP|240x320|400X240|AvantGo|BlackBerry|Blazer|Cellphone|Danger|DoCoMo|Elaine/3.0|EudoraWeb|Googlebot-Mobile|hiptop|IEMobile|KYOCERA/WX310K|LG/U990|MIDP-2.|MMEF20|MOT-V|NetFront|Newt|Nintendo\ Wii|Nitro|Nokia|Opera\ Mini|Palm|PlayStation\ Portable|portalmmm|Proxinet|ProxiNet|SHARP-TQ-GX10|SHG-i900|Small|SonyEricsson|Symbian\ OS|SymbianOS|TS21i-10|UP.Browser|UP.Link|webOS|Windows\ CE|WinWAP|YahooSeeker/M1A1-R2D2|iPhone|iPod|Android|BlackBerry9530|LG-TU915\ Obigo|LGE\ VX|webOS|Nokia5800).*
RewriteCond %{HTTP:Accept-Encoding} gzip
RewriteCond %{DOCUMENT_ROOT}/wp-content/cache/supercache/%{HTTP_HOST}/$1/index.html.gz -f
RewriteRule ^(.*) /wp-content/cache/supercache/%{HTTP_HOST}/$1/index.html.gz [L]

RewriteCond %{REQUEST_METHOD} !POST
RewriteCond %{QUERY_STRING} !.*=.*
RewriteCond %{HTTP:Cookie} !^.*(comment_author_|wordpress|wp-postpass_).*$
RewriteCond %{HTTP_USER_AGENT} !^.*(2.0\ MMP|240x320|400X240|AvantGo|BlackBerry|Blazer|Cellphone|Danger|DoCoMo|Elaine/3.0|EudoraWeb|Googlebot-Mobile|hiptop|IEMobile|KYOCERA/WX310K|LG/U990|MIDP-2.|MMEF20|MOT-V|NetFront|Newt|Nintendo\ Wii|Nitro|Nokia|Opera\ Mini|Palm|PlayStation\ Portable|portalmmm|Proxinet|ProxiNet|SHARP-TQ-GX10|SHG-i900|Small|SonyEricsson|Symbian\ OS|SymbianOS|TS21i-10|UP.Browser|UP.Link|webOS|Windows\ CE|WinWAP|YahooSeeker/M1A1-R2D2|iPhone|iPod|Android|BlackBerry9530|LG-TU915\ Obigo|LGE\ VX|webOS|Nokia5800).* …
Run Code Online (Sandbox Code Playgroud)

php apache wordpress .htaccess

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

在没有苹果开发者帐户的情况下将新的 iPhone UDID 添加到配置文件中

我是我们应用程序设计团队的一员(我有使用 python、php、jquery 和 java 的经验,但从来没有使用过 ObjC),并且在我们的 iPhone 开发人员休假时被移交了一些开发人员的职责。从开发人员那里,我有项目源、他的 p12 私钥和 mobileprovision 文件。

尝试在设备上构建应用程序时,我已经遇到了这个错误:

Code Sign error:
  The identity 'iPhone Developer: xxxxxx xxxxx (xxxxxxxxxx)' doesn't match any valid
  certificate/private key pair in the default keychain
Run Code Online (Sandbox Code Playgroud)

尽管 XCode 显然可以识别发行版和钥匙串(我曾经security import xx.p12 -k ~/Library/Keychains/login.keychain导入p12文件;并且钥匙串 GUI 中有私钥和 iPhone 发行版:xxxx xxxxxxx 证书。

我很确定我可以解决这个问题,但我主要关心的是我是否可以为下周进行的 beta 测试添加新的 UDID。我见过的方法都是通过苹果的开发中心添加设备,然后下载;即无法在本地添加 UDID。我们的开发人员使用他的个人 Apple Dev 许可证(一个 99 美元)运行它,我们没有密码。

所以主要问题是:有没有办法在不使用 Apple 开发中心(即本地)的情况下将 UDID 添加到我们的发行版,或者更糟糕的情况,我可以将我的帐户注册为 Apple 开发人员,然后将 UDID 添加到该新帐户以进行分发吗?

iphone xcode

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

如何在可扩展列表中为子项的click事件创建

我正在玩这个例子. http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/ExpandableList2.html

我无法弄清楚如何将一个监听器附加到子元素,以便我可以在用户点击电话号码时触发一些操作.

任何代码或链接将不胜感激.

events android listener

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

学习WCF的最佳方法是什么?

是否有用于在C#中学习WCF的好书?你有什么建议?为什么?

wcf

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