我有一个线程下载数据,我想等到下载完成后再加载数据.有这样做的标准方法吗?
更多信息:
我有一个从URL(序列化POJO)获取数据的Download类.下载是Runnable和Observable.它跟踪下载的字节数和下载大小.我有一个进度条,向用户显示进度.GUI观察下载以更新进度条.
当下载POJO时,我想得到它并转到下一步.每一步都必须等待前一步完成.问题是我想不出一种暂停我的应用程序等待下载线程的方法.下载完成后,我想调用download.getObject(),它将数据作为对象返回.然后我可以投下它并继续进行下一次下载.
我有一个帮助程序类来管理下载的URL并进行所有下载调用.此调用将调用getObject并执行转换.Gui调用helper.getUser().帮助程序启动线程运行,我希望它在完成时"知道",以便它可以返回已转换的对象.
有什么建议/例子吗?我处于这个设计的开始阶段,所以我愿意改变它.
非常感谢你.
更新:
我跟着http://download.oracle.com/javase/6/docs/api/javax/swing/SwingWorker.html#get和使用模式来阻止,直到线程完成.代码非常混乱,我不喜欢这种方法.我将继续尝试找到一种"干净"的方式来处理下载过程的工作流程.
我正在尝试使用EntLib将解决方案转换为使用AppFabric缓存.借助一些扩展方法,这是一个相当痛苦的过程.
我使用的扩展方法:
public static bool Contains(this DataCache dataCache, string key)
{
return dataCache.Get(key) != null;
}
public static object GetData(this DataCache dataCache, string key)
{
return dataCache.Get(key);
}Run Code Online (Sandbox Code Playgroud)
但是我发现EntLib有两个很难转换的功能.即"Count"(计算缓存中的键数)和"Flush"(从缓存中删除所有数据).如果我可以迭代缓存中的密钥,两者都可以解决.
有一个方法被调用ClearRegion(string region),但是我需要在我使用的所有Get/Put/Add方法上指定一个区域名称,这需要一些手动容易出错的工作.
有没有办法获取缓存中的密钥列表?
我可以使用默认的区域名称吗?
如果我没有使用区域名称,如何刷新缓存?
如果这些部分不是有效的HTML标记,我想替换String中所有看起来像标记的部分.带标签的部分用<>括号括起来.例如.<myemail@email.com>或者<hello>不过<br>,<div>等必须保持.
你知道如何实现这个目标吗?
任何帮助表示赞赏!
干杯,
巴拉兹
在SQL Server Management Studio中,我执行了以下查询.
不幸的是,我忘记取消该WHERE条款.
更新了1647行而不是4行.
如何撤消最后一条陈述?
不幸的是,我刚刚完成了这些1647行的翻译并正在进行最后的修正 ,因此没有备份.
UPDATE [dbo].[T_Language]
SET
[LANG_DE] = 'Mietvertrag' --<LANG_DE, varchar(255),>
,[LANG_FR] = 'Contrat de bail' -- <LANG_FR, varchar(255),>
,[LANG_IT] = 'Contratto di locazione' -- <LANG_IT, varchar(255),>
,[LANG_EN] = 'Tenancy agreement' -- <LANG_EN, varchar(255),>
--WHERE [LANG_DE] like 'Mietvertrag'
Run Code Online (Sandbox Code Playgroud)
有一个交易协议,至少我希望如此.
是否有一些相对简单的方法以编程方式将源代码行包含到python logger报告中.例如...
import logging
def main():
something_is_not_right = True
logging.basicConfig(level=logging.DEBUG,
format=('%(filename)s: '
'%(levelname)s: '
'%(funcName)s(): '
'%(lineno)d:\t'
'%(message)s')
)
if something_is_not_right == True:
logging.debug('some way to get previous line of source code here?')
Run Code Online (Sandbox Code Playgroud)
所以输出看起来像这样.
example.py: DEBUG: main(): 14: if something_is_not_right == True:
Run Code Online (Sandbox Code Playgroud) 我在C#中创建了一个程序,我试图将它移植到java.GUI的设计是这样的:http://img507.imageshack.us/img507/7728/34685005.png
在Client Downloader通过1.0版并在Client Downloader之前停止之后启动的淡化分隔符行.这些行是否在java中可用?我正在使用jFormDesigner,我不确定那些线是否在那里.
如果它们可用,它们叫什么?谢谢.
如果数组是以null结尾的,那么这将非常简单:
unsigned char u_array[4] = { 'a', 's', 'd', '\0' };
std::string str = reinterpret_cast<char*>(u_array);
std::cout << "-> " << str << std::endl;
Run Code Online (Sandbox Code Playgroud)
但是,我想知道复制非null终止的 unsigned char数组的最合适方法是什么,如下所示:
unsigned char u_array[4] = { 'a', 's', 'd', 'f' };
Run Code Online (Sandbox Code Playgroud)
进入std::string.
有没有办法在没有迭代unsigned char数组的情况下做到这一点?
谢谢你们.
我有一个单身人士,我在争论是否有一些静态方法可以隐藏单身人士对客户端的使用是不好的做法.例如:
Singleton::Instance()->Foo();
Run Code Online (Sandbox Code Playgroud)
比.
Singleton::FooHelper();
Run Code Online (Sandbox Code Playgroud)
定义FooHelper的地方:
class Singleton
{
...
static void FooHelper()
{
Singleton::Instance()->Foo();
}
...
}
Run Code Online (Sandbox Code Playgroud)
第二种解决方案被认为是不良做法吗 我不会为Singleton的所有方法创建辅助函数,只是客户端代码经常使用的方法.
当我偶然发现这个问题时,我正在尝试使用C++ 0x可变参数模板:
template < typename ...Args >
struct identities
{
typedef Args type; //compile error: "parameter packs not expanded with '...'
};
//The following code just shows an example of potential use, but has no relation
//with what I am actually trying to achieve.
template < typename T >
struct convert_in_tuple
{
typedef std::tuple< typename T::type... > type;
};
typedef convert_in_tuple< identities< int, float > >::type int_float_tuple;
Run Code Online (Sandbox Code Playgroud)
当我尝试输入模板参数包时,GCC 4.5.0给出了一个错误.
基本上,我想将参数包"存储"在typedef中,而无需解压缩.可能吗?如果没有,是否有一些理由不允许这样做?
我有以下xml节点:
val xml = <fields><field name="one"></field><field name="two"></field></fields>
Run Code Online (Sandbox Code Playgroud)
现在我想用field-name作为键创建Map [String,Node].
for{x <- xml \ "field"} yield Map(x \ "@name" -> x)
Run Code Online (Sandbox Code Playgroud)
使用上面的yield我得到了一个地图列表:
List(Map((one,<field name="one"></field>)), Map((two,<field name="two"></field>)))
Run Code Online (Sandbox Code Playgroud)
我如何功能性地获取Map [String,Node]而不采用命令式方式(temp-vars)将List中的Maps转换为最终所需的Map,可能没有收益?