我喜欢在using块中实例化我的WCF服务客户端,因为它几乎是使用实现的资源的标准方法IDisposable:
using (var client = new SomeWCFServiceClient())
{
//Do something with the client
}
Run Code Online (Sandbox Code Playgroud)
但是,正如本MSDN文章中所述,在using块中包装WCF客户端可能会掩盖导致客户端处于故障状态的任何错误(如超时或通信问题).简而言之,当调用Dispose()时,客户端的Close()方法会触发,但会因为处于故障状态而抛出错误.然后,第二个异常掩盖了原始异常.不好.
MSDN文章中建议的解决方法是完全避免使用using块,而是实例化您的客户端并使用它们,如下所示:
try
{
...
client.Close();
}
catch (CommunicationException e)
{
...
client.Abort();
}
catch (TimeoutException e)
{
...
client.Abort();
}
catch (Exception e)
{
...
client.Abort();
throw;
}
Run Code Online (Sandbox Code Playgroud)
与using块相比,我认为这很难看.每次需要客户端时都需要编写很多代码.
幸运的是,我发现了一些其他的解决方法,例如IServiceOriented上的这个.你从:
public delegate void UseServiceDelegate<T>(T proxy);
public static class Service<T>
{
public static ChannelFactory<T> _channelFactory = new ChannelFactory<T>("");
public static void Use(UseServiceDelegate<T> codeBlock)
{ …Run Code Online (Sandbox Code Playgroud) 我有一个我正在努力的网站,我现在只想显示给其他几个网站.设置Windows用户名并使用Windows auth在进入开发站点之前提示用户有什么问题吗?
我有多么相当于一个多维数组.
int[][][] MyValues;
Run Code Online (Sandbox Code Playgroud)
我想要的是通过强类型的equivelent访问索引,例如枚举.我知道你可以从Enum类型中获取枚举值,但是我的口味有点长.
我宁愿有办法强力键入索引.
例如:
int CarNumber = MyValues[Racetrack.Daytona][Race.Daytona500][Driver.JGordon];
Run Code Online (Sandbox Code Playgroud)
由于它是枚举式的,因此可以防止任何超出范围的异常被抛出,而且它为所有索引提供了一个很好的人类可读意义.
我已经使用字典方法实现了这一点,但它似乎有点沉重:
Dictionary<Racetrack,Dictionary<Race,<Dictionary<Driver,int>>> =
new Dictionary<Racetrack,Dictionary<Race,<Dictionary<Driver,int>>>();
Run Code Online (Sandbox Code Playgroud)
然后我可以通过枚举访问,但我真的不喜欢这种方法.这看起来很"难看".
我正在寻找一些替代方法,在使用人类可读的索引器时表示基本上是多维数组,同时保持类型安全(例如,不能无意中使用Race作为Race,所以简单地使用consts不是好方法).
有什么建议?
这将是一个编译时数组(上面的例子不是真实的,只是一个例子)所以我不必担心插入或删除或其他操作的数组.它将在价值,大小和布局方面保持不变.
使用带有const值的静态类也不是一个好方法,因为它不强制只有定义的值集可以作为索引器传递.
谁能想到使用多重继承的任何情况?我能想到的每个案例都可以通过方法运算符来解决
AnotherClass() { return this->something.anotherClass; }
Run Code Online (Sandbox Code Playgroud) 继承我的代码.
import os, sys
if len(sys.argv) != 2:
sys.exit(1)
h = os.popen("wget -r %s") % sys.argv[1]
fil = open("links.txt","w")
dir = os.listdir("%s") % sys.argv[1]
for file in dir:
print file.replace("@","?")
fil.write("%s/"+file.replace("@","?")) % sys.argv[1]
fil.write("\n")
h.close()
Run Code Online (Sandbox Code Playgroud)
运行它,就像这个python project.py http://google.com
给我错误代码.
1.py:5 RuntimeWarning: tp_compare didnt return -1 or -2 for exception
h = os.popen("wget -r %s") % sys.argv[1]
Traceback (most recent call last):
File "1.py" line 5, in <module>
h = os.popen("wget -r %s") % sys.argv[1]
TypeError: unsupported operand type<s> for %: …Run Code Online (Sandbox Code Playgroud) 我是否在页面事件(例如加载)时使用响应,因为这是来自ASP.NET的响应,并且在按下按钮时请求,因为这是对ASP.NET进行处理的响应?或者还有更多吗?
只是想知道开发人员是否值得使用SQL Server 2005/2008 Developer Edition而不是Visual Studio附带的捆绑SQL Server Express版本.我正在谈论网站的初始开发,你需要创建SQL脚本来生成表格和类似的东西.我知道使用Express可以很容易地将一个.mdf文件添加到你的项目和程序中,但是安装开发人员版本和程序对于一个模拟你将要在生产中使用的"真实"数据库不是更好的?这样,如果您正在使用VS Professional并且可以创建"数据库项目",则可以包含所有创建脚本并在生产中运行它们以重新创建环境.
在iPhone应用程序中使用视图和视图控制器时,任何人都可以解释loadView和viewDidLoad之间的区别吗?
我个人的背景是,我从代码构建我的所有视图,我不会,也不会使用Interface Builder,如果这有任何区别.
我发现通常当我将初始化代码添加到loadView时,我最终会得到一个无限的堆栈跟踪,所以我通常在viewDidLoad中完成所有的子视图构建...但是每次执行时我都不清楚它,并且什么是更适合放置init代码的地方.什么是完美的,是一个简单的初始化调用图.
谢谢!
java version "1.5.0_14" Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_14-b03) Java HotSpot(TM) Server VM (build 1.5.0_14-b03, mixed mode)
我正在尝试调试NullPointerException,我将传递对静态定义字段的引用.更具体地说,我在Drools3工作内存实例上设置了一个全局.
workingMemory.setGlobal("log", workingMemorieslog);
Run Code Online (Sandbox Code Playgroud)
我的假设是静态收集字段静态的类.(接收类必须使用WeakReference或类似的东西,我真的不知道)
你会如何建议调试这个?我想如果我能确切知道JVM的GC何时卸载类的类/实例,那么我可以缩小错误行为的原因.(如果不是事件的确切时间,至少得到某事确实发生的迹象).
谢谢你,马克西姆.
是否可以更改UIPickerView的高度?某些应用程序似乎有较短的PickerViews,但设置较小的框架似乎不起作用,框架在Interface Builder中被锁定.
c# ×3
ios ×2
iphone ×2
asp.net ×1
classpath ×1
cocoa-touch ×1
collections ×1
eclipse ×1
java ×1
objective-c ×1
oop ×1
python ×1
security ×1
sql-server ×1
uikit ×1
uipickerview ×1
uiview ×1
using ×1
vb.net ×1
wcf ×1
wcf-client ×1
web ×1
windows ×1