问题列表 - 第44631页

如何将任务的已取消状态传播到延续任务

我在我的应用程序中使用任务并行库.我有一个任务(让我们称之为"DoSomething")可能被取消.无论任务是故障,取消还是成功完成,我都会继续执行该任务,执行一些清理工作.

在启动此任务的代码中,我想返回一个Task对象,其状态(出错,取消,运行完成)反映了DoSomething任务的状态,但重要的是我返回的这个任务不会反映这个状态,直到继续任务执行.

这是一个例子:

public Task Start(CancellationToken token)
{
    var doSomethingTask = Task.Factory.StartNew(DoSomething
                                                , token);

    var continuationTask = doSomethingTask.ContinueWith
                (
                 (antecedent) =>
                     {
                         if (antecedent.IsFaulted || antecedent.IsCanceled)
                         {
                             //Do failure-specific cleanup
                         }

   //Do general cleanup without regard to failure or success
                      }
                 );

//TODO: How do I return a Task obj which Status reflect the status of doSomethingTask,
//but will not transition to that status until continuationTask completes?
}
Run Code Online (Sandbox Code Playgroud)

我可以使用TaskCompletionSource,但这看起来很糟糕.还有其他想法吗?

c# .net-4.0 task-parallel-library c#-4.0

4
推荐指数
1
解决办法
903
查看次数

SQL/Oracle按特定日期的某种类型按字段分组数据

好吧,尝试构建一个单独的查询来节省我自己一大堆时间(而不是写大量的单独查询),但我甚至不知道如何开始这个.

我需要的是single day and type在上午8:00到晚上8:00之间按小时查看和分析行动计数.所以例如我有以下假表

TYPE_   ACTION_     TIMESTAMP_
------------------------------
A       processed   2010-11-19 10:00:00.000
A       processed   2010-11-19 10:46:45.000
A       processed   2010-11-19 11:46:45.000
A       processed   2010-11-19 12:46:45.000
A       processed   2010-11-19 12:48:45.000
A       pending     2010-11-19 11:46:45.000
A       pending     2010-11-19 11:50:45.000
A       pending     2010-11-19 12:46:45.000
A       pending     2010-11-19 12:48:45.000
B       pending     2010-11-19 19:48:45.000
B       pending     2010-11-19 21:46:45.000
.etc
Run Code Online (Sandbox Code Playgroud)

所以,如果我想查看所有记录

  • TYPE_ ='A'
  • 日期2010-11-19
  • 按行动每小时分组

我会看到这个结果

ACTION_ NUMOCCURENCES   RANGE
---------------------------------------------
processed  2                10:00:00 - 11:00:00
pending    0                10:00:00 - 11:00:00
processed  1                11:00:00 - …
Run Code Online (Sandbox Code Playgroud)

sql oracle grouping timestamp

4
推荐指数
1
解决办法
3966
查看次数

C#中的软件使用情况分析

我目前正在进行一个项目,并希望在代码中实现某种软件跟踪.理想情况下,它的推出频率.它运行了多长时间,功能跟踪等.我已经将Exceptioneer用于未处理的异常,但是想要使用类似的用法跟踪.

这些数据应该都是匿名的,理想情况下由其他人作为服务运行.我想让用户选择将其关闭,如果他们希望...那么,这是我应该实现的东西,还是有第三方做那种事情?我知道它可能是一个粘性区域,但我已经看到有关iPhone应用程序使用情况的统计数据.他们这样做,为什么我们不能?(如果用户同意,当然)

[更新]根据评论,我应该更清楚.这是一个Winforms .NET 4.应用程序,虽然我想稍后用WCF更新它.我只会跟踪我自己的应用程序,虽然我也想知道有关环境的小信息(Windows操作系统版本,SP,也许proc和ram ......)

c# service monitoring usage-statistics

8
推荐指数
1
解决办法
2632
查看次数

使用指向c ++函数的指针调用qsort

我找到了一本书,指出如果你想使用C标准库中的函数,它将函数指针作为参数(例如qsort),你想要传递函数指针的函数需要是一个C函数因此声明为extern"C".

例如

extern "C" {
  int foo(void const* a, void const* b) {...}
}

... 
qsort(some_array, some_num, some_size, &foo);
Run Code Online (Sandbox Code Playgroud)

如果这只是错误的信息,我不会感到惊讶,但是 - 我不确定,所以:这是正确的吗?

c++

3
推荐指数
2
解决办法
521
查看次数

如何在Lua中实现OO?

Lua没有为OO构建支持,但它允许您自己构建它.你能否分享一些可以实现OO的方法?

请为每个答案写一个例子.如果您有更多示例,请发布另一个答案.

oop lua

20
推荐指数
3
解决办法
1万
查看次数

可以创建可以原子交换的AtomicReference吗?

有没有办法实现一种类型的引用,其值可以与另一个原子交换?


在Java中,我们AtomicReference可以使用本地变量而不是其他变量进行交换AtomicReference.

你可以做:

AtomicReference r1 = new AtomicReference("hello");
AtomicReference r2 = new AtomicReference("world");
Run Code Online (Sandbox Code Playgroud)

并将它们与两个操作组合交换:

r1.set(r2.getAndSet(r1.get()));
Run Code Online (Sandbox Code Playgroud)

但是这使得它们之间处于不一致状态,两者都包含在内"hello".即使你可以原子地交换它们,你仍然无法原子地读取它们(作为一对).


我希望能做的是:

PairableAtomicReference r1 = new PairableAtomicReference("hello");
PairableAtomicReference r2 = new PairableAtomicReference("world");
AtomicRefPair rp = new AtomicRefPair(r1, r2);
Run Code Online (Sandbox Code Playgroud)

然后

Object[] oldVal, newVal;
do {
    oldVal = rp.get();
    newVal = new Object[] {oldVal[1], oldVal[0]};
} while (! rp.compareAndSet(oldVal, newVal));
Run Code Online (Sandbox Code Playgroud)

交换值,并在另一个线程中:

AtomicRefPair otherRP = new AtomicRefPair(r1, r2);
System.out.println(Arrays.toString(otherRP.get()));
Run Code Online (Sandbox Code Playgroud)

并确保输出将是[hello, world][world, hello].

笔记:

  • r1并且r2为此操作配对,但是另一个线程可能会独立配对,说r1 …

java interlocked atomicreference atomic-swap

6
推荐指数
1
解决办法
1640
查看次数

UIButton打开Facebook应用程序

我试图制作一个按钮,退出我的应用程序,并打开我的应用程序配置文件的Facebook应用程序(如果可用).我无法弄清楚我将如何做到这一点.

iphone facebook objective-c

0
推荐指数
1
解决办法
1393
查看次数

如何判断文件是否可以从脚本写入?

我的插件需要能够写入文件系统.是否可以查询已知文件的写入权限?

例如,我的wordpress主题附带了一个名为custom.css的文件,我需要对其进行写访问.当我的主题首次加载时,我想查询此脚本以查看其是否可写,然后将结果回显给我的主题.

然后在支持会话中,我可以要求用户直观地检查此设置以确保我具有预期的写入权限(并将其作为读/写问题的原因消除).

php error-handling file-io

2
推荐指数
1
解决办法
509
查看次数

guids可以信任安全性,还是可以预测系统是否可以强制生成许多已知的guid?

要开始,并定义guid,我使用.net框架Guid这有点假设情况用户在执行特定操作时会生成guid.每个用户都可以看到自己的guid.如果用户要知道另一个用户的guid之一,则会出现安全性损害.

如果我们认为用户无法窃取另一个用户的guid并且只能猜测它,那么这个系统的安全性如何?

我明白盲目猜测guid是不可能的.即使他们有一百万个成功价值,他们仍然只有10 ^ 20的成功猜测机会

我害怕可能存在的问题是指导预测.用户是否可以生成大量请求,查看他获得的guid,并且知道.net guid生成公式可以大大提高他猜测的几率?这些几率可以降低到安全问题吗?在这种情况下,如何以一种独特的不可猜测的方式生成密钥?

我问任何提到猜测/碰撞几率的人都会增加一些难以理解的含义.要么是用于定义赔率的确切数字,要么是"它可以用于存储帐户数据,而不是用于存储敏感数据"

编辑

这个问题似乎很好地进入了我最初想要探索的领域这个问题 GUID是(临时)加密的一个好关键吗?

.net security guid

11
推荐指数
1
解决办法
1854
查看次数

Java中的XSLT转换极其缓慢

我尝试使用XSLT转换XML文档.作为输入,我有www.wordpress.org XHTML源代码,而XSLT是虚拟示例检索站点的标题(实际上它什么都不做 - 它不会改变任何东西).

我使用的每个API或库,转换大约需要2分钟!如果你看看wordpress.org源代码,你会发现它只有183行代码.正如我用Google搜索,这可能是由于DOM树的构建.无论XSLT多么简单,它总是2分钟 - 所以它确认它与DOM构建有关,但无论如何它不应该花2分钟.

这是一个示例代码(没什么特别的):

  TransformerFactory tFactory = TransformerFactory.newInstance();
   Transformer transformer = null;

   try {
       transformer = tFactory.newTransformer(
           new StreamSource("/home/pd/XSLT/transf.xslt"));

   } catch (TransformerConfigurationException e) {
       e.printStackTrace();
   }

   ByteArrayOutputStream outputStream = new ByteArrayOutputStream();

   System.out.println("START");
   try {
       transformer.transform(new SAXSource(new InputSource(
           new FileInputStream("/home/pd/XSLT/wordpress.xml"))),
           new StreamResult(outputStream));
   } catch (TransformerException e) {       
       e.printStackTrace();
   } catch (IOException e) {
       e.printStackTrace();
   }
   System.out.println("STOP");

   System.out.println(new String(outputStream.toByteArray()));
Run Code Online (Sandbox Code Playgroud)

它位于START和STOP之间,其中java"暂停"2分钟.如果我查看处理器或内存使用情况,则不会增加任何内容.它看起来真的是JVM停止了......

您是否有任何转换长度超过50的XML(这是随机数;))的经验?当我读到XSLT时,总是需要构建DOM树才能完成它的工作.快速转型对我来说至关重要.

提前谢谢,Piotr

java xml xslt

4
推荐指数
1
解决办法
7273
查看次数