我有一个包含3个单选按钮的WinForms对话框.我ApplicationSettings用来绑定每个RadioButton控件的Checked属性,但它没有做我期望它做的事情.现在我必须先点击每个单选按钮两次才能检查它并且所选的单选按钮没有被保留.
当表单关闭以保存用户设置时,是否需要执行一行代码?
如何消除2倍点击单选按钮的需要?
有没有更好的方法来保持这种类型的用户设置?我在对话框类上有一个公共属性,它根据选中的单选按钮获取/设置枚举值,但我没有看到将该属性绑定到用户设置的简单方法.
编辑:应该指定我正在使用vb.net.我认为这意味着My.Settings而不是Properties.Settings.
我的问题实际上分为两个部分,因此模糊的标题.
第一部分
据我所知,你永远不应该吞下一个例外.甚至没有记录它而忘记了.在一般情况下,我尝试解决异常并重试代码 - 例如,假设我得到一个FileNotFound异常.
我提示用户检查文件是否存在并重试,提供另一个文件选择器对话框并希望最好.如果未能尝试解决问题,我最终会通知用户并记录异常.我被告知在catch块中这不是正确的事情,所以我是通过尝试解决问题来做到的吗?
我想不出还有什么我应该做的.我怀疑我被喂错了信息 - 我是一个可以控制的灵魂.
第二部分
在我的程序目录中创建一个日志以记录异常我认为很好,但我再次被告知应该将异常写入windows eventlog.它是否正确?在什么情况下你应该写入事件日志?
愚蠢的问题需要愚蠢的答案
编辑:除了一般模糊的域名之外,这个问题没有上下文.我和我的朋友在特定情况下对正确的事情进行了喋喋不休.
我试图在Linux上创建一个包装器,它控制一次允许多少次并发执行.为此,我使用系统范围的计数信号量.我创建信号量,执行a sem_wait(),启动子进程,然后在子进程sem_post()终止时执行.那样就好.
问题是如何安全地处理发送给这个包装器的信号.如果它没有捕获信号,则命令可能会在不执行a的情况下终止sem_post(),从而导致信号量计数永久减少1.所以,我创建了一个信号处理程序sem_post().但是,仍有一个问题.
如果在执行处理程序之前附加处理程序,则sem_wait()信号可能在sem_wait()完成之前到达,从而导致在sem_post()没有处理的情况下发生sem_wait().如果我sem_wait()在设置信号处理程序之前执行此操作,则可以反过来.
显而易见的下一步是在处理程序和设置过程中阻止信号sem_wait().这是我现在拥有的伪代码:
void handler(int sig)
{
sem_post(sem);
exit(1);
}
...
sigprocmask(...); /* Block signals */
sigaction(...); /* Set signal handler */
sem_wait(sem);
sigprocmask(...); /* Unblock signals */
RunChild();
sem_post(sem);
exit(0);
Run Code Online (Sandbox Code Playgroud)
现在的问题是sem_wait()可以阻塞,在此期间,信号被阻止.试图杀死进程的用户可能最终诉诸"kill -9",这是我不想鼓励的行为,因为无论如何我都无法处理这种情况.我可以使用sem_trywait()一小段时间并进行测试,sigpending()但这会影响公平性,因为不再保证等待信号量最长的进程将在下一次运行.
这里有一个真正安全的解决方案,允许我在信号量采集期间处理信号吗?我正在考虑求助于"我有信号量"全局并消除信号阻塞,但这不是100%安全,因为获取信号量并设置全局不是原子的,但可能比等待时阻塞信号更好.
关于恢复WinForm位置和大小的许多帖子.
例子:
但我还没有找到使用多个监视器执行此操作的代码.
也就是说,如果我使用监视器2上的窗口关闭我的.NET Winform应用程序,我希望它将窗口大小,位置和状态保存到应用程序设置,以便以后可以在我重新启动应用程序时恢复到监视器2.如果在上面的代码项目示例中它包含一些健全性检查,那将是很好的,因为如果保存的位置大部分是在屏幕外,它"修复"它.或者如果保存的位置在不再存在的显示器上(例如我的笔记本电脑现在没有我的第二台显示器),那么它会正确地将其移动到显示器1.
有什么想法吗?
我的环境:C#,.NET 3.5或更低版本,VS2008
我正在开发一个可以发生各种事件的小型Java游戏.至少有几十个基本事件,各种事件处理程序可能会感兴趣.代码中还有几个地方可能会触发这些事件.我不想强迫事件监听器知道他们需要注册哪个类,而是想创建某种集中式的消息调度系统,有些类会将事件提交到,感兴趣的类可以挂钩来监听某些类型事件.
但我有一些问题.首先,这似乎是一个明显而常见的问题.是否有简单的虚拟机内消息系统的最佳实现?好像会有.
其次,更重要的是,我正在尝试为调度类找出一种相当优雅的方式来尽可能少地了解消息的类型.我希望能够在不修改消息调度程序的情况下创建新类型的事件.但是,我有一个相反的担忧.我真的很喜欢处理方法的方法签名要清楚.换句话说,我更喜欢以下内容:
public class CollisionConsoleHandler implements CollisionListener {
@Override
public void spaceshipCollidedWithMeteor( Spaceship spaceship, Meteor meteor ) {
//...
}
}
Run Code Online (Sandbox Code Playgroud)
更通用,更难阅读的东西:
public class CollisionConsoleHandler implements GameMessageListener {
@Override
public void handleMessage( GameMessage message ) {
if( message instanceof SpaceshipCollisionMessage ) {
Spaceship spaceship = ((SpaeshipCollisionMessage)message).getSpaceship();
Meteor meteor = ((SpaeshipCollisionMessage)message).getMeteor();
//...
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是我没有看到任何好的方法将类型特定的知识保留在调度程序之外,同时保持方法签名的清晰和可读性.
想法?
我想fling在我的Android应用程序中运行手势检测.
我拥有的是GridLayout包含9 ImageView秒的内容.源代码可以在这里找到:Romain Guys的网格布局.
我拿的那个文件来自Romain Guy的Photostream应用程序,并且只是略微适应了.
对于简单的点击情况,我只需要onClickListener为ImageView我添加的每一个设置为activity实现的主要部分View.OnClickListener.实现识别a的东西似乎无比复杂fling.我认为这是因为它可能跨越views?
如果我的活动实现,
OnGestureListener我不知道如何将其设置为我添加Grid的Image视图或视图的手势监听器.
public class SelectFilterActivity extends Activity implements
View.OnClickListener, OnGestureListener { ...
Run Code Online (Sandbox Code Playgroud)如果我的活动实现,
OnTouchListener那么我没有
onFling方法override(它有两个事件作为参数,允许我确定是否值得注意).
public class SelectFilterActivity extends Activity implements
View.OnClickListener, OnTouchListener { ...
Run Code Online (Sandbox Code Playgroud)如果我做了一个自定义View,就像GestureImageView那个扩展ImageView我不知道如何告诉活动fling从视图中发生了.无论如何,我试过这个,当我触摸屏幕时没有调用方法.
我真的只需要一个跨视图的具体例子.什么,何时以及如何附上这个listener?我还需要能够检测单击.
// Gesture detection
mGestureDetector = new …Run Code Online (Sandbox Code Playgroud) 什么是隐式递归?它与显式递归有什么不同?
我认为这是一个简单的"问题",我已经找到了几个解决方案,但我不知道哪种方式可以用于C#中的最佳实践.
在应用程序的生命周期中,我有一个主对象(比如一个单例).这个"MasterClass"创建了一堆新类型的对象,每次调用MasterClass.Instance.CreateSlaveObject时都说"SlaveClass".
此MasterClass还监视其他一些对象的状态更改,当发生这种情况时,通知它创建的SlaveClass对象的更改.看起来很简单.
因为我来自本地C++世界,所以我首先使用它来创建一个接口
Interface IChangeEventListener
{
void ChangeHappened();
}
Run Code Online (Sandbox Code Playgroud)
我从中派生出"SlaveClass".然后在我的"MasterClass"中,我有:
...
IList<IChangeEventListener> slaveList;
...
CreateSlaveObject
{
...
slaveList.Add(slave);
}
...
ChangeHappened()
{
...
foreach(var slave in slaveList)
{
slave.ChangeHappened();
}
}
Run Code Online (Sandbox Code Playgroud)
这很有效.但是我一直在想,如果有另一种(更好的)方法可以做到这一点.所以我对这个主题进行了更多研究,并看到了C#事件.
因此,我不是在MasterClass中维护一个奴隶集合,而是将MasterClass注入到SlaveClass的ctor中(或通过一个属性),让SlaveClass对象将它的ChangeHappened作为事件处理程序添加.这将说明:
...Master...
public delegate void ChangeHappenedDelegate(object sender, NewsInfoArgs args);
public event NewUpdateDelegate ChangeHappenedEvent;
....
public SlaveClass (MasterClass publisher) //inject publisher service
{
publisher.ChangeHappenedEvent += ChangeHappened;
}
Run Code Online (Sandbox Code Playgroud)
但这似乎是Slave和Master之间不必要的耦合,但我喜欢所提供的内置事件通知机制的优雅.
那么我应该保留当前的代码,还是转向基于事件的方法(使用发布者注入)?为什么?
或者,如果您可以提出我可能错过的替代解决方案,我也会感激.
有没有办法坚持变量?
Declare @bob as varchar(50);
Set @bob = 'SweetDB';
GO
USE @bob --- see note below
GO
INSERT INTO @bob.[dbo].[ProjectVersion] ([DB_Name], [Script]) VALUES (@bob,'1.2')
Run Code Online (Sandbox Code Playgroud)
请参阅"USE @bob"行的SO问题.
sql sql-server sql-server-2000 sql-server-2008 sql-server-2012
我有一个执行某项功能的Windows服务,然后需要将该信息发送到Web服务进行处理.Web服务由远程Web应用程序托管.我试图确定调用webservice的最佳方式,因为每个Web应用程序可能只有2.0或3.5等.在我的Windows服务中,我在app.config中定义每个"客户端",例如
<Client WebServiceUrl="http://location.com/webservice.svc" Username="" Password="">
</Client>
Run Code Online (Sandbox Code Playgroud)
Web应用程序必须实现我的Windows服务运行所需的两个Web服务,但不确定实现Web应用程序"规则"的最佳方法.
编辑:
我将尝试改写.. Windows服务每30秒运行一次并获取信息列表.该服务支持多个"客户端",如上所示.运行每个客户端进程时,将收集数据,然后将其发送到支持Web应用程序.
Windows服务不知道如何处理数据,它只是发送它.客户端的每个Web应用程序都位于不同的位置,并且可能构建在2.0,3.5,PHP等中.所有Windows服务关心的是,当它为客户端执行其处理时,它能够发送数据到Windows服务的app.config中定义的Web服务位置.
我想要确定的是如何连接到webservice(我倾向于WCF,但是Basic或WS不确定),以及需要为Web应用程序定义如何构建响应的规则.
如果Windows服务是支持php应用程序等,WSHttpBinding将不是一个选项,这意味着BasicHttpBinding将起作用.另一件事要决定是否使用RESTful服务或SOAP服务.
希望这更有意义.
c# ×3
.net ×2
events ×2
winforms ×2
android ×1
appsettings ×1
c ×1
collections ×1
delegates ×1
exception ×1
haskell ×1
java ×1
lisp ×1
listener ×1
posix ×1
radio-button ×1
recursion ×1
scheme ×1
sql ×1
sql-server ×1
vb.net ×1
wcf ×1
web-services ×1