问题列表 - 第31134页

bind()用于使用成员函数作为STL比较函数

有人能告诉我为什么以下不会编译?

#include "a.h"
#include <list>
#include <algorithm>
#include <tr1/functional>

using namespace std;

class B {
  public:
    B() {
      list< A* > aList;
      A* a = new A();
      lower_bound( aList.begin(), aList.end(), a, tr1::bind( &B::aComp, tr1::placeholders::_1, tr1::placeholders::_2 ) );
    }
  private:
    bool aComp( A* a1, A* a2 );
};
Run Code Online (Sandbox Code Playgroud)

编译输出:

In file included from c:\qt\2010.04\mingw\bin\../lib/gcc/mingw32/4.4.0/include/c++/tr1/functional:56, 
from ..\bindTest\/b.h:4, 
from ..\bindTest\b.cpp:1: 
c:\qt\2010.04\mingw\bin\../lib/gcc/mingw32/4.4.0/include/c++/tr1_impl/functional: In member function 'typename std::tr1::result_of<_Functor(typename std::tr1::result_of<std::tr1::_Mu<_Bound_args, std::tr1::is_bind_expression::value, (std::tr1::is_placeholder::value > 0)>(_Bound_args, std::tr1::tuple<_UElements ...>)>::type ...)>::type std::tr1::_Bind<_Functor(_Bound_args ...)>::__call(const std::tr1::tuple<_UElements ...>&, std::tr1::_Index_tuple<_Indexes ...>) [with _Args = …
Run Code Online (Sandbox Code Playgroud)

c++ comparison stl bind

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

2D阵列中的寻路

假设我有这个2D数组映射

{ 0,0,0,0,7,1,1,1,1,1,1,1,1 },
{ 0,7,7,7,7,1,1,1,24,1,1,1,1 },
{ 0,7,24,24,24,24,24,24,24,1,1,3,1 },
{ 0,7,23,23,23,23,23,23,24,1,1,3,1 },
{ 0,7,24,23,23,23,23,23,23,1,1,1,1 },
{ 0,7,24,23,23,23,23,23,23,1,1,1,1 },
{ 0,7,23,23,23,23,23,23,24,1,3,1,1 },
{ 0,7,24,24,24,24,24,24,24,1,3,1,1 },
{ 0,0,0,0,1,1,1,1,1,1,1,1,1 },
Run Code Online (Sandbox Code Playgroud)

我有HashSet充满定义被阻止的瓷砖的整数.什么是一个好方法,以便当我点击地图的一部分时,我的玩家站在那里做一个好的寻路?A*(使用节点/等)?你有什么建议?

谢谢.

java arrays 2d a-star path-finding

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

在Java DOM中将节点的内部XML作为String获取

我有一个XML org.w3c.dom.Node,如下所示:

<variable name="variableName">
    <br /><strong>foo</strong> bar
</variable>
Run Code Online (Sandbox Code Playgroud)

如何将<br /><strong>foo</strong> bar零件作为String?

java xml dom

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

ObservableCollection:使用多个新项调用OnCollectionChanged

请注意,我正在尝试使用NotifyCollectionChangedAction.Add操作而不是.Reset.后者确实有效,但对于大型集合来说效率不高.

所以我继承了ObservableCollection:

public class SuspendableObservableCollection<T> : ObservableCollection<T>
Run Code Online (Sandbox Code Playgroud)

由于某种原因,这段代码:

private List<T> _cachedItems;
...

    public void FlushCache() {
        if (_cachedItems.Count > 0) {

        foreach (var item in _cachedItems)
            Items.Add(item);

        OnCollectionChanged(new NotifyCollectionChangedEventArgs(
            NotifyCollectionChangedAction.Add, (IList<T>)_cachedItems));
        }
    }
Run Code Online (Sandbox Code Playgroud)

抛出 一个集合添加事件是指不属于集合的项目

这似乎是BCL的一个错误?

我可以在调用OnCollectionChanged之前逐步查看将新项添加到this.Items

刚刚发现了一个惊人的发现.这些方法都不适合我(flush,addrange),因为只有当这个集合绑定到我的Listview时才会触发错误!

TestObservableCollection<Trade> testCollection = new TestObservableCollection<Trade>();
List<Trade> testTrades = new List<Trade>();

for (int i = 0; i < 200000; i++) 
    testTrades.Add(t);

testCollection.AddRange(testTrades); // no problems here.. 
_trades.AddRange(testTrades); // this one is bound to ListView .. BOOOM!!!
Run Code Online (Sandbox Code Playgroud)

总之,ObservableCollection确实支持添加增量列表,但ListView不支持.Andyp想出了一个解决方法,使其适用于下面的CollectionView,但是由于调用了.Refresh(),这与调用OnCollectionChanged(.Reset)没什么不同.

c# generics subclass observablecollection c#-4.0

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

TortoiseHg:推动变革了吗?

我一直在分支机构工作并做了一些提交.现在有什么方法可以在TortoiseHg中看到,如果这些提交被推或者它们仍然只是本地的?

mercurial push commit tortoisehg changeset

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

ASP.Net缓存共享

我有一个ASP.Net 4.0 Web应用程序,它经常从数据库加载数据并对其进行繁重的计算.我想将这些已加载和准备好的数据缓存在中央缓存中,每个使用该应用程序的用户和计算机都可以访问该缓存.

简单的用例:

  • 用户1访问网页,缓存为空,数据被加载/计算,数据被缓存
  • 用户2访问网页,缓存包含数据,从缓存加载的数据
  • 用户3访问网页,缓存包含数据,从缓存加载的数据
  • 用户1重新加载网页,缓存包含数据,从缓存加载的数据
  • 缓存过期
  • 用户3刷新网页,缓存为空,加载/计算数据,缓存数据

我知道ASP.Net有一个内置的缓存机制.我不知道的是它是否可以在同一时间访问不同计算机上的站点的不同用户之间共享.我还想知道系统在Web场环境中的行为方式.

.net asp.net caching

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

在混合托管/非托管环境中支持多种体系结构的最佳方法是什么?

背景

我们有一个.NET库,它引用了我们的一个非托管dll,让我们说:

  • DotNet.dll
  • Unmanaged.dll

到目前为止,Unmanaged.dll只有32位,所以DotNet.dll标有32位CPU类型.

需要添加64位支持.如何组织dll?对于32位和64位版本,DotNet.dll的IL代码都是相同的.

选项1

  • 32Bit Libraries文件夹
    • DotNet.dll,32位CPU类型
    • Unmanaged.dll,编译为32位
  • 64位库文件夹
    • DotNet.dll,64位CPU类型
    • Unamanged.dll,编译为64位

在这种情况下,使用这些库的开发人员被迫生成2个应用程序:32位和64位.但在这种情况下,确切知道发生了什么.

选项2

这与选项1相同,但DotNet.dll具有AnyCPU的CPU类型.

  • 32Bit Libraries文件夹
    • DotNet.dll,AnyCPU的CPU类型
    • Unmanaged.dll,编译为32位
  • 64位库文件夹
    • DotNet.dll,AnyCPU的CPU类型
    • Unamanged.dll,编译为64位

我不喜欢这个,因为使用这些库的开发人员在重新分发他们的应用程序时不能很好地使他们的应用程序不会崩溃而不在他们的应用程序上设置CPU类型:

  • 如果他们使用32位库文件夹,在64位操作系统上,他们的进程将崩溃
  • 如果他们使用64位操作系统文件夹,则在32位操作系统上,他们的进程将崩溃

这使得选项1优于选项2.

选项3

  • Unmanaged_x32.dll,编译为32位
  • Unmanaged_x64.dll,编译为64位
  • DotNet.dll,AnyCPU的CPU类型

DotNet.dll在运行时将确定它运行的位数,然后PInvoke正确的Unmanaged.dll.

问题(S)

  1. 作为这些库的开发者,哪个选项最有意义?
  2. 作为使用DotNet.dll库的开发人员,哪个选项最有意义?
    1. 对于选项3,如果您使用的是DotNet.dll,您是否想知道运行时库是否确定要使用的Unmanaged.dll?
    2. 使用这些库重新分发应用程序怎么样?
  3. 有些选项缺失了吗?

.net unmanaged managed 32bit-64bit

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

尝试写入事件日志时出错 - 无法打开源"SourceName"的日志.您可能没有写入权限

我们目前正在尝试将现有的经典ASP页面集成到我们记录到事件日志的新方法中.我们通过将.NET程序集公开为COM对象来实现此目的,该COM程序将实际记录到事件日志中.这一切都正常,但是当我们尝试写入事件日志时,我们收到错误"无法打开源'SourceName'的日志.您可能没有写访问权限." 从aspx页面调用时,日志代码本身可以正常工作.这显然是IUSR_machinename帐户的权限问题,但是,通过查看其他一些相关帖子,我们尝试了许多解决方案而没有任何成功.

  • 编辑HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/EventLog/Application/RestrictGuestAccess - 将其设置为0
  • 将IUSR_machinename添加到本地管理员组并删除来宾组
  • 编辑CustomSD并将(A ;; 0x0002 ;;; AU)附加到此处的值

我们唯一的成功是使用ASP.NET模拟在服务器上使用新创建的本地管理员帐户.但是,这个用户可以使用,这是一种解决方法,而不是解决初始权限问题.还有什么我们可以尝试使用IUSR_machinename帐户获取权限吗?

c# asp.net permissions events logging

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

我为什么在使用框架4.0时无法在System.Configuration DLL上加载文件或程序集错误?

在我们升级到visual studio 2010和4.0框架后,我们的主干构建立即开始打破无法加载文件或程序集错误.

我们确定了一个3.5的项目不能引用4.0其他项目因为,作为错误状态,我们会得到这个错误该组件由运行时比当前加载的运行新建成并无法加载.

我们已经解决了这个问题,后备箱一直很好.

然而,我最近做了一个分支和标记,当我尝试构建分支时,突然出现了这个错误; 除了错误是关于我们自己的.net 4.0项目对System.Configuration DLL的引用之一.

Towps.Namespace.MyService.csproj在Core.Dev\Towps\Projetcs \应用\为MyService:
RG0000:无法加载引用的程序集

"C:\ WINDOWS\Microsoft.Net \装配\ GAC_MSIL\System.Configuration\v4.0_4.0.0 .0__b03f5f7f11d50a3a\System.Configuration.dll".
抓到一个BadImageFormatException说:"无法加载文件或程序集
'C:\ WINDOWS\Microsoft.Net \装配\ GAC_MSIL\System.Configuration\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Configuration.dll'.或者它的一个依赖
此程序集由比当前加载的运行时更新的运行时构建,无法加载." 在ResGen(0,0)

我尝试在该系统上设置特定的版本属性.配置DLL引用为true.
我可以在其属性中看到运行时版本是v4.0.30319,版本是4.0.0.0.
该DLL裁判的路径是C:\ Program Files文件(x86)的\参考大会\微软\ Framework.NETFramework\V4.0\System.Configuration.dll这对我来说看起来不错.

CrusieControl使用MSBuild尝试构建的csproj文件的目标框架是针对框架4.0.再好像.

它构建在IDE中,用于主干和分支.Cruise Control在后备箱中构建它.当CrusieControl尝试构建时,分支构建失败.

有什么想法会发生什么?

这可能是一个MSBuild不匹配,但我已经扫描的配置文件和CruiseControl的使用并有年长MSBuilds没有引用的MSBuild PROJ文件; 这是有道理的,因为所有这些都更新,以使主干工作.

分支只是一个主干的副本,所以我很难确定可能有什么区别!

cruisecontrol.net dll assemblies .net-4.0

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

Android:AsyncTask可以在另一个线程中返回UI线程吗?

Android文档说postExecute()在UI线程上调用了AsyncTask .我的印象postExecute()是从被调用的Thread execute()调用的:我一直在后台Service中使用AsyncTask并使用自己的线程,并且在服务线程中调用了postExecute(),而不是主线程.
但是,我最近遇到了一个问题,即postEecute()根本没有被调用,而抛出异常:"在死线程上向处理程序发送消息".

具体如何:
- AsyncTask只能在主线程中使用吗?
- 如果没有,postExecute()应该调用哪个线程:总是UI线程,还是execute()调用线程?

谢谢

multithreading android android-asynctask

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