×

Loading...
Ad by
  • 推荐 OXIO 加拿大高速网络,最低月费仅$40. 使用推荐码 RCR37MB 可获得一个月的免费服务
Ad by
  • 推荐 OXIO 加拿大高速网络,最低月费仅$40. 使用推荐码 RCR37MB 可获得一个月的免费服务

仍然是.net里面windows service 调用 queued com+的问题。

1 windows service调用com+

Private Sub Timer_Elapsed(ByVal sender As System.Object, ByVal e As System.Timers.ElapsedEventArgs) Handles Timer.Elapsed

Timer.Interval = 100
Timer.Enabled = False

Dim Year As Integer = 2004

Dim serviceProcessor As IQC = GetObject(_queueMoniker)

serviceProcessor.Integrate(Year)
Marshal.ReleaseComObject(serviceProcessor)
serviceProcessor = Nothing


Timer.Enabled = True

End Sub

2 com+的功能 是把sourcetable里面的数据经过处理拷贝到targettable
主要包括3个步骤:
1〉设置sourcetable里面的status为inprocess
2) 处理数据,并拷贝到targettable
3〉设置sourcetable里面的status为processed

3问题:
1〉只有一个记录走完这三步,拷贝到targettable,看到sourcetable里面有数条纪录status = inprocess,为什么会这样,是否是windows service timer_elapsed里面的设计问题。
2)象这类的queued com+一般如何调试?

谢谢。
Report

Replies, comments and Discussions:

  • 工作学习 / IT技术讨论 / 仍然是.net里面windows service 调用 queued com+的问题。
    1 windows service调用com+

    Private Sub Timer_Elapsed(ByVal sender As System.Object, ByVal e As System.Timers.ElapsedEventArgs) Handles Timer.Elapsed

    Timer.Interval = 100
    Timer.Enabled = False

    Dim Year As Integer = 2004

    Dim serviceProcessor As IQC = GetObject(_queueMoniker)

    serviceProcessor.Integrate(Year)
    Marshal.ReleaseComObject(serviceProcessor)
    serviceProcessor = Nothing


    Timer.Enabled = True

    End Sub

    2 com+的功能 是把sourcetable里面的数据经过处理拷贝到targettable
    主要包括3个步骤:
    1〉设置sourcetable里面的status为inprocess
    2) 处理数据,并拷贝到targettable
    3〉设置sourcetable里面的status为processed

    3问题:
    1〉只有一个记录走完这三步,拷贝到targettable,看到sourcetable里面有数条纪录status = inprocess,为什么会这样,是否是windows service timer_elapsed里面的设计问题。
    2)象这类的queued com+一般如何调试?

    谢谢。
    • up
      • up
        • :(
          • up for me.
    • show your main Thread code. the Thread you Strat the Timer.
      • 是这个么?
        Protected Overrides Sub OnStart(ByVal args() As String)

        'Here set the queue moniker private field
        _queueMoniker = args(0)
        'Here set the interval for the time

        'Set proper Interval for different service
        Me.Timer.Interval = 100

        Me.Timer.Enabled = True


        Me.Timer.Start()
        End Sub
        • 不好意思,刚到家,Timer 的code看起来没有问题。试试在Timer_Elapsed里加一句:System.IO.File.Create("c:\" & System.DateTime.Now.Ticks.ToString()),看看是不是有多个文件生成,如果有,则不是Timer的问题。
          • sorry,我正在测试,越急越出错。:(
          • 产生两个文件之后,再写文件时,开始出现错误信息:Access to the path "c:\6320........." is denied.
          • hey,哥们,你是不是睡了。:(
            • 我可是在toronto。。。。。