当其中一个可以为空时,如何减去两个日期?
public static int NumberOfWeeksOnPlan(User user)
{
DateTime? planStartDate = user.PlanStartDate; // user.PlanStartDate is: DateTime?
TimeSpan weeksOnPlanSpan;
if (planStartDate.HasValue)
weeksOnPlanSpan = DateTime.Now.Subtract(planStartDate); // This line is the problem.
return weeksOnPlanSpan == null ? 0 : weeksOnPlanSpan.Days / 7;
}
Run Code Online (Sandbox Code Playgroud) 为什么以下代码会出现运行时错误:
Triggers集合的成员必须是EventTrigger类型
但EventTrigger元素没有Binding属性.
那么如何根据DataContext属性更改TextBlock的颜色?
XAML:
<Window x:Class="TestTrigger123345.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="300">
<StackPanel HorizontalAlignment="Left">
<TextBlock Text="{Binding Status}">
<TextBlock.Triggers>
<DataTrigger Binding="{Binding Status}" Value="off">
<Setter Property="TextBlock.Background" Value="Red"/>
</DataTrigger>
</TextBlock.Triggers>
</TextBlock>
</StackPanel>
</Window>
Run Code Online (Sandbox Code Playgroud)
码:
namespace TestTriggers
{
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
DataContext = this;
Status = "off";
}
public string Status { get; set; }
}
}
Run Code Online (Sandbox Code Playgroud) class Object
attr_reader :foo
def initialize
@foo = 'bar'
end
end
Object.new.foo # => 'bar'
''.foo # => nil
//.foo # => nil
[].foo # => nil
Run Code Online (Sandbox Code Playgroud)
我希望他们都回来 'bar'
我知道你已经可以这样做了:
class Object
def foo
'bar'
end
end
Run Code Online (Sandbox Code Playgroud)
但我特别想初始化一个状态变量.另请注意,这不起作用.
class String
alias_method :old_init, :initialize
def initialize(*args)
super
old_init(*args)
end
end
class Object
attr_reader :foo
def initialize
@foo = 'bar'
super
end
end
''.foo # => nil
Run Code Online (Sandbox Code Playgroud)
这也不是:
class String
attr_reader :foo
def initialize
@foo = 'bar'
end
end
''.instance_variables # => …Run Code Online (Sandbox Code Playgroud) 我正在编写一个服务器程序,其中包含一个生产者和多个消费者,让我感到困惑的只是生成器放入队列的第一个任务被消耗,之后排队的任务不再被消耗,它们永远保留在队列中.
from multiprocessing import Process, Queue, cpu_count
from http import httpserv
import time
def work(queue):
while True:
task = queue.get()
if task is None:
break
time.sleep(5)
print "task done:", task
queue.put(None)
class Manager:
def __init__(self):
self.queue = Queue()
self.NUMBER_OF_PROCESSES = cpu_count()
def start(self):
self.workers = [Process(target=work, args=(self.queue,))
for i in xrange(self.NUMBER_OF_PROCESSES)]
for w in self.workers:
w.start()
httpserv(self.queue)
def stop(self):
self.queue.put(None)
for i in range(self.NUMBER_OF_PROCESSES):
self.workers[i].join()
queue.close()
Manager().start()
Run Code Online (Sandbox Code Playgroud)
生产者是HTTP服务器,一旦接收到用户的请求,就将任务放入队列中.当队列中有新任务时,消费者进程似乎仍然被阻止,这很奇怪.
PS另外两个与上述问题无关的问题,我不确定将HTTP服务器放在除主流程之外的其他进程中是否更好,如果是,如何在所有子进程结束之前使主进程继续运行.第二个问题,什么是优雅地停止HTTP服务器的最佳方法?
编辑:添加生产者代码,它只是一个简单的python wsgi服务器:
import fapws._evwsgi as evwsgi
from fapws import base …Run Code Online (Sandbox Code Playgroud) 我有linux c ++多线程应用程序.现在它已在生产服务器上进行测试并具有段错误.问题是我无法在任何测试服务器上重现该错误,也无法访问生产服务器.我没有转储或任何其他有用的信息.只有行:segfault at 0000000046bf0fb8 rip 000000000048ac6b rsp 0000000046bf0fa0 error 6
我想问社区我可以从这样的线路获得一些信息,这些信息将有助于减少我应该搜索的地方的区域.由于速度慢,我无法在生产上运行调试版本.我可以添加哪些内容来帮助我调试?这个bug看起来像多线程的bug,很难重现.但我不确定,因为应用程序可以处理来自MTA的许多不同的电子邮件.
平台:Linux
编译器行:g ++ -O3 -D_REENTRANT
谢谢.
upd.:谢谢你的回答.我可以包含调试信息.我想知道调试发布版本的基本方法.例如,我有转储和发布版本.我该怎么办?我该怎么读?您能用几句话解释如何调试应用程序吗?谢谢.
在多线程应用程序中调试崩溃时,我终于在此语句中找到了问题:
CSingleLock(&m_criticalSection, TRUE);
Run Code Online (Sandbox Code Playgroud)
请注意,它正在创建一个CSingleLock类的未命名对象,因此在此语句之后,临界区对象会立即解锁.这显然不是编码员想要的.此错误是由简单的输入错误引起的.我的问题是,有些我可以防止在编译时自己创建类的临时对象,即上面的代码类型应该生成编译器错误.一般来说,我认为每当一个类尝试进行某种资源获取时,就不应该允许该类的临时对象.有没有办法强制执行呢?
我有一个继承自UIViewController的类.在那里,我想做一些像这样的ivar初始化:
- (id)initWithNibName:(NSString *)nibName bundle:(NSBundle *)nibBundle { // Load the view nib
NSLog(@"Hello Earth!");
if (self = [super initWithNibName:nibName bundle:nibBundle]) {
self.visibleIndex = 0;
NSLog(@"Hello Planet!");
}
return self;
}
Run Code Online (Sandbox Code Playgroud)
出于某种原因,我确实看到了从笔尖加载的内容.但由于另一个原因,永远不会调用此初始化程序.我从来没有收到日志消息.这有什么问题?我肯定有一个笔尖,所以实际上这必须被调用,对吧?
我在带有subclipse的Windows上安装了Eclipse 3.4.2.另一位开发人员添加了一个带有凭据的SVN存储库,并选择了"保存密码".现在每次我使用SVN做任何事情都会使用他的缓存凭据.我怎样才能将它们改成我的?
我已经检查了'workspace/.metadata/.plugins/org.tigris ...'文件夹,但找不到任何重置这些缓存凭据的方法.
是否可以包含Windows域凭据以使用SOAP UI测试我的Web服务?
我找到了一个属性页面,但IIS只响应"错误的凭据".
我需要一种在代码隐藏中强制回发或页面重新加载的方法.尝试使用一些JavaScript,但没有让它工作.浏览网页我看到第一个问题是"为什么"?
情况是我在autopostback上有一个下拉列表,gridview数据源的select参数是从该下拉列表的选定值派生的.因此,页面正常工作正常,并且每当更改所选项目时内容都会更新.但是一些链接和按钮将客户从页面上移开,以便稍后链接回来.
我们的想法是将最后一个选项存储在会话中,并在会话选项不是默认值时检查第一个page.load事件.现在我可以根据它更改下拉列表的selectedindex,但显然数据源触发的速度比page.load快,所以除非我可以强制重新加载,否则这无济于事.
有任何想法吗?完整页回发/重新加载当然不是唯一的选择,只是强制gridview/datasource刷新就足够了.除了重新加载整个页面之外,我只是不知道该怎么做.
谢谢.
c# ×2
c++ ×2
.net-2.0 ×1
asp.net ×1
cocoa-touch ×1
code-behind ×1
datetime ×1
eclipse ×1
iphone ×1
linux ×1
mfc ×1
nib ×1
nullable ×1
oop ×1
postback ×1
python ×1
reload ×1
ruby ×1
soap ×1
soapui ×1
styles ×1
subclipse ×1
subversive ×1
svn ×1
temporary ×1
testing ×1
triggers ×1
uikit ×1
web-services ×1
wpf ×1
xaml ×1