代码之家  ›  专栏  ›  技术社区  ›  Jeff LaFay

为什么我的工作流服务(4.0)变量在DoWhile活动中变为空?

  •  0
  • Jeff LaFay  · 技术社区  · 14 年前

    我有一个WF服务,我正在尝试设置接收活动“订阅”和“取消订阅”。我在用 This WF Durable Duplex Tutorial

    当客户机调用Unsubscribe()时,我在调试期间对address var设置的监视显示为 null

    下面是我的WF服务布局的基本设置。。。

    一切都笼罩在一种无聊的活动中。其中有一个Pick活动和两个Pick分支。第一个分支用于订阅活动。它有一个receive-sendreply活动,将客户端传递的字符串分配给WF address变量。第二个分支处理取消订阅。触发器是请求活动,客户端地址再次传入。

    从那里它进入一个序列,从If开始。它会检查 unsubscribeAddress 等于 address 已订阅。如果是这样的话,那么它将设置 地址 String.Empty 并将成功消息发送回客户端。

    为什么一个作用域为包络DoWhile活动的变量会被隐式赋值为null?我正在尝试让它工作,这样我就可以从那里实现多个客户机订户,并在触发器上调用对多个客户机的回调。

    我在DoWhile级别设置了一个断点,我的var有一次为null Unsubscribe() 被称为。什么时候? Subscribe() 调用时,手表会一直显示var中的值。直到我 取消订阅() 和一个客户。我应该使用While活动吗?

    3 回复  |  直到 14 年前
        1
  •  1
  •   Maurice    14 年前

    没有看到工作流程,我只能做一些猜测,但我要寻找的是:

    1. 变量的作用域是序列还是DoWhile活动内部的某个东西?顺便说一句,把它改成While活动没有任何好处,唯一的区别是在开始或结束时测试条件。
    2. 是在其他地方使用的变量,并以这种方式清除。试着重新命名它,看看有什么好处。
    3. 游戏中是否存在持久性,类型是否不持久>我假设它要么是一个字符串,要么是一个Uri,两者都应该很好。
        2
  •  0
  •   Jake Kalstad    14 年前

    尝试创建一个类范围的私有{get;集合;}看看这个问题是否还存在,这是我在看不到实际源代码的情况下所能做的最好的事情,因为从你所描述的我看不到任何问题。

        3
  •  0
  •   Jeff LaFay    14 年前

    哇,好可怕的东西。我之前不得不手工编辑xamlx文件,当我切换回活动设计器时,为SendReplyToReceive编辑的引用保存了下来。它让我看起来像有两个 Unsubscribe() 不仅如此,每个分支的相关句柄都在分支之间交叉。

    我都准备好了。为了解决这个问题,我删除了所有的消息传递活动,加入了一个新的 ReceiveAndSendReply