我有一个类是"经理"类.其中一个功能是发出应该关闭该类的长时间运行过程的信号.它通过在类中设置一个名为"IsStopping"的布尔值来实现.
public class Foo
{
bool isStoping
void DoWork() {
while (!isStopping)
{
// do work...
}
}
}
Run Code Online (Sandbox Code Playgroud)
现在,DoWork()是一个巨大的功能,我决定重构它,并且作为该过程的一部分,将其中的一部分打破到其他类中.问题是,这些类中的一些还具有长时间运行的函数,需要检查isStopping是否为真.
public class Foo
{
bool isStoping
void DoWork() {
while (!isStopping)
{
MoreWork mw = new MoreWork()
mw.DoMoreWork() // possibly long running
// do work...
}
}
}
Run Code Online (Sandbox Code Playgroud)
我有什么选择?
我已经考虑通过引用传递isStopping,我不喜欢它,因为它需要有一个外部对象.我宁愿让额外的课程尽可能独立和免费.
我还考虑过使用isStopping属性,然后让它调用一个内部类可以订阅的事件,但这看起来过于复杂.
另一种选择是创建一个"进程取消令牌"类,类似于.net 4 Tasks使用的类,然后将该令牌传递给这些类.
你是怎么处理这种情况的?
编辑:
还要考虑MoreWork可能有一个实例化的EvenMoreWork对象,并在...上调用可能长时间运行的方法.我想我正在寻找的是一种方法,能够在调用树下发出任意数量的对象信号,告诉他们停止他们正在做的事情并清理和返回.
EDIT2:
感谢到目前为止的回复.似乎对使用的方法没有真正的共识,每个人都有不同的意见.看起来这应该是一种设计模式......
有没有办法简单地让我的块和他们的结束关键字与vim正确对齐?如果我有一个嵌套了几个条件的函数,事情就会开始变得难看.vim能节省一天吗?
之前正在工作的我的网站突然开始打破错误
"在/包含urlconf resume.urls不正确的配置中没有任何模式"
项目基础称为简历.在settings.py我已设置
ROOT_URLCONF = 'resume.urls'
Run Code Online (Sandbox Code Playgroud)
这是我的resume.urls,它位于项目根目录中.
from django.conf.urls.defaults import *
# Uncomment the next two lines to enable the admin:
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
# Example:
# (r'^resume/', include('resume.foo.urls')),
# Uncomment the admin/doc line below and add 'django.contrib.admindocs'
# to INSTALLED_APPS to enable admin documentation:
(r'^admin/doc/', include('django.contrib.admindocs.urls')),
# Uncomment the next line to enable the admin:
(r'^admin/', include(admin.site.urls)),
(r'^accounts/login/$', 'django.contrib.auth.views.login'),
#(r'^employer/', include(students.urls)),
(r'^ajax/', include('urls.ajax')),
(r'^student/', include('students.urls')),
(r'^club/(?P<object_id>\d+)/$', 'resume.students.views.club_detail'),
(r'^company/(?P<object_id>\d+)/$', 'resume.students.views.company_detail'),
(r'^program/(?P<object_id>\d+)/$', 'resume.students.views.program_detail'),
(r'^course/(?P<object_id>\d+)/$', 'resume.students.views.course_detail'), …Run Code Online (Sandbox Code Playgroud) 是否可以将Lua与Google App Engine一起使用?我认识到会有很多Java胶水,但我想在大多数逻辑中使用Lua.
在JavaScript中,如何创建一个与现有函数同名的新函数,同时还保留原始函数,以便可以从新函数中调用它?
我有两个程序(.exe),我在.NET中创建.我们称他们为师父和工人.大师启动1个或更多工人.工作人员不会与工作人员进行交互,但它是一个WinForms应用程序,它接收命令并根据从主服务器接收的命令运行WinForms组件.
我希望Worker应用程序完全隐藏运行(当然,除了显示在任务管理器中).我认为我可以使用StartInfo.CreateNoWindow和StartInfo.WindowStyle属性完成此操作,但我仍然在表单中看到Client.exe窗口和组件.但是,它不会显示在任务栏中.
Process process = new Process
{
EnableRaisingEvents = true,
StartInfo =
{
CreateNoWindow = true,
WindowStyle = ProcessWindowStyle.Hidden
FileName = "Client.exe",
UseShellExecute = false,
ErrorDialog = false,
}
};
Run Code Online (Sandbox Code Playgroud)
我需要做什么才能让Client.exe运行但不显示?
我想要为应用程序ID使用某种常量(所以我可以在printf中使用它).
我有这个:
#define _APPID_ "Hello World!"
Run Code Online (Sandbox Code Playgroud)
然后是简单的printf,将其调用为%s(字符串).它说出来了:
simple.cpp:32: error: cannot convert ‘_IO_FILE*’ to ‘const char*’ for argument ‘1’ to ‘int printf(const char*, ...)’
我将使用什么来定义要在printf中使用的应用程序ID?我试过了:
static const char _APPID_[] = "Hello World"`
Run Code Online (Sandbox Code Playgroud)
但它没有用,我认为同样的错误.
我们有一个完全通过HTTPS访问的站点,但有时会显示外部内容,即HTTP(主要来自RSS提要的图像).绝大多数用户也坚持使用IE6.
我理想的是喜欢做以下两种情况
我怀疑第一个目标根本不可能,但第二个目标可能就足够了.
最糟糕的情况是我在导入时解析RSS源,抓取图像将它们存储在本地,以便用户可以通过这种方式访问它们,但似乎很难获得相当大的收益.
这是一个棘手的问题 - 我如何以编程方式创建和查询其内容我无法预见的数据库?
我正在实现一个通用的输入表单系统.用户可以使用WYSIWYG布局创建PHP表单,并将其用于他希望的任何目的.他也可以查询输入.
所以,我们有三个阶段:
由于这些表单是通用的,我无法预测数据库结构 - 除了说它将反映HTML表单字段并且包括来自编辑框,备忘录,单选按钮等的集合的数据输入.
问题和评论:
A)如何在表和列方面最好地构建数据库?主键怎么样?我的第一个想法是使用控件名称来标识每一列,然后我意识到用户可以编辑表单并重命名,这样可能"名称"变为"员工"或"工资"变为":薪水".我倾向于每个人的唯一编号.
B)如何最好地键入行?我在想一个允许我查询的时间戳和来自A的行Id的列
C)我必须处理列重命名/插入/删除.敌人删除,我不确定是否从数据库中删除数据.即使用户不再从表单输入它,他也可能希望查询先前输入的内容.或者可能存在一些保留数据的法律要求.列重命名/插入/删除中的任何问题?
D)对于查询,我可以让我的PHP查询数据库以获取列名并生成一个带有列表的表单,其中每个条目都有一个数据库列名,一个复选框说明它是否应该在查询中使用,并且基于列类型,一些选择标准.这应该足以构建像"position ='高级推销员'和薪水> 50k"这样的搜索.
E)我可能必须生成一些花哨的图表 - 图表,直方图,饼图等,以便随着时间的推移查询数值数据的结果.我需要为此找到一些好的FOSS PHP.
F)我还忘记了什么?
对我来说这一切看起来都很棘手,但我是数据库n00b - 也许你对大师来说很简单?
编辑:请不要告诉我不要这样做.我没有任何选择:-(
编辑:在现实生活中,我不希望列重命名/插入/删除频繁.但是,运行几个月后可能需要更改数据库.我确信这种情况经常发生.我担心我已经严重地提出了这个问题并且人们认为每10分钟左右就会发生变化.
实际上,我的用户将在布置表单时定义数据库.他们可能第一次就做对了,永远不会改变它 - 特别是如果他们从纸质表格转换.即使他们决定改变,这可能只发生一次或两次,数月或数年后 - 这可能发生在任何数据库中.
我不认为我在这里有一个特例,也不认为我们应该专注于改变.或许更好地专注于联系 - 什么是一个好的主键计划?或许,对于一个文本输入,一个数字和一个备忘录?
我正在寻找重建类似于流行科学应用程序的效果.基本上有一个大背景图像,然后有HTML/CSS层.当用户滚动内容时,图像的背景位置应保持原位,而不是滚动.
显然在"常规"浏览器中我会使用background-attachment:fixed,但这似乎不适用于ipad.我知道位置:根据safari规范修复不起作用,但是有没有办法实现这个目标?