我正在开发一个有一些问题的Windows服务,Thread.Sleep()所以我想我会尝试使用计时器,因为这个问题建议:
事情是我不清楚如何实现这一点.我相信这是方法,但我只想确保:
'' Inside The Service Object
Dim closingGate As System.Threading.AutoResetEvent
Protected Overrides Sub OnStart(ByVal args() As String)
Dim worker As New Threading.Thread(AddressOf Work)
worker.Start()
End Sub
Protected Sub Work()
Dim Program = New MyProgram()
closingGate = New System.Threading.AutoResetEvent(False)
Program.RunService(closingGate)
End Sub
Protected Overrides Sub OnStop()
closingGate.Set()
End Sub
'' Inside My Programs Code:
Public Sub RunService(closingGate As AutoResetEvent)
Dim tmr As New Timer
'' ...and so on
closingGate.WaitOne()
End Sub
Run Code Online (Sandbox Code Playgroud)
除了使用VB.Net(开玩笑,但如果可以的话,我会使用C#.)我是否在正确的轨道上?这比使用更好Thread.Sleep()吗?
只是稍微使用Silverlight并尝试设置一个样式以应用于所有TextBlocks.以下XAML:
<Style TargetType="{x:Type TextBlock}">
<Setter Property="Margin" Value="10, 10, 10, 10" />
</Style>
Run Code Online (Sandbox Code Playgroud)
给我错误 Invalid attribute value {x:Type TextBlock} for property TargetType.
我从MSDN复制并粘贴了这一位,所以我有点迷失为什么我收到这个错误.
编辑:
这是我现在正在尝试的完整代码:
<UserControl x:Class="NIRC.Page"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Width="400" Height="300">
<UserControl.Resources>
<Style TargetType="TextBlock">
<Setter Property="Margin" Value="10" />
<Setter Property="Foreground" Value="Red" />
</Style>
</UserControl.Resources>
<TextBlock>Hello World!</TextBlock>
</UserControl>
Run Code Online (Sandbox Code Playgroud)
以下是它的外观:
我有一个由Website和REST API组成的Web应用程序.我应该将它们托管在同一台服务器上还是应该将它们托管在不同的服务器上?"服务器"是指服务器集群 - 负载均衡器后面的几个服务器.
API主要是入站流量,网站 - 主要是出站.
如果重要 - 托管在Rackspace和/或AWS上.
这是我到目前为止所看到的:
在同一台服务器上使用网站和REST API的好处
分裂的好处
任何意见?
谢谢
亚历山大
正如标题所说,我不能在 nuget v3 url 中使用 Find-Package 命令:
https://api.nuget.org/v3/index.json
Run Code Online (Sandbox Code Playgroud)
如果我运行命令:
Find-Package nuget.versioning -Source https://api.nuget.org/v3/index.json
Run Code Online (Sandbox Code Playgroud)
我收到一个错误,提示找不到匹配项。将命令更改为:
Find-Package nuget.versioning -Source https://www.nuget.org/api/v2
Run Code Online (Sandbox Code Playgroud)
工作正常。
我是否需要升级某些软件才能使其正常工作?我正在运行 Powershell 版本 5,所以我不确定我需要采取哪些步骤来解决这个问题。
我觉得我像标题一样玩了流行语宾果游戏。这是我要问的一个简洁示例。假设我对某些实体有一些继承层次结构。
class BaseEntity { ... }
class ChildAEntity : BaseEntity { ... }
class GrandChildAEntity : ChildAEntity { ... }
class ChildBEntity : BaseEntity { ... }
Run Code Online (Sandbox Code Playgroud)
现在让我们说说我为服务提供了一个通用接口,该接口具有使用基类的方法:
interface IEntityService<T> where T : BaseEntity { void DoSomething(BaseEntity entity)... }
Run Code Online (Sandbox Code Playgroud)
我有一些具体的实现:
class BaseEntityService : IEntityService<BaseEntity> { ... }
class GrandChildAEntityService : IEntityService<GrandChildAEntity> { ... }
class ChildBEntityService : IEntityService<ChildBEntity> { ... }
Run Code Online (Sandbox Code Playgroud)
假设我已经将所有这些都注册到了容器中。所以,现在我的问题是,如果我迭代通过List的BaseEntity?我如何获得注册的服务与最接近的匹配?
var entities = List<BaseEntity>();
// ...
foreach(var entity in entities)
{
// Get the …Run Code Online (Sandbox Code Playgroud) c# generics dependency-injection strategy-pattern decorator-pattern
我将资产放入具有到期标头的S3,并成功传递到CloudFront分配.但是,到期后的请求不会导致CloudFront从源服务器请求新文件.
我也发现查询字符串版本标记不强制新资产,我不想使用完整的文件名版本控制.
所有这些可能都归结于我对缓存控制标头的不了解,但我开始怀疑我是否遗漏了一些关于CloudFront应该如何工作的批评.CloudFront响应显示如下所示的标头.
Cache-Control: max-age=120
Expires: Tue, 07 Apr 2009 12:13:26 GMT
Run Code Online (Sandbox Code Playgroud) 我是新的开发机器,我只是设置它.我通过firefox加载项选项找到了S3组织者,但我找不到弹性狐狸---它去了哪里?
有没有人有一些代码可以确定IP地址(IPv4或IPv6)是否与运行应用程序的计算机位于同一子网上?我已经看过很多用IPv4做的代码示例,但我找不到任何支持IPv6的代码.
编辑:
我不确定我是否理解v4和v6之间的所有差异,所以这里有一点我的问题.我有一个为Internet客户端和Intranet客户端提供服务的应用程序,也就是说有些客户端与服务器位于同一物理网络上.所以有时客户端之间有路由器,有时候没有路由器.使用IPv4,我可以通过检查服务器IP地址和子网的客户端IP地址来确定这一点,这样如果我的服务器的IP和子网掩码分别是:
192.168.123.15 255.255.255.0
并且服务器从192.168.123.100接收客户端请求我知道客户端和服务器之间没有路由器.但是,如果服务器收到来自192.168.1.100或67.7.23.4的客户端请求,我知道这些客户端和服务器之间存在路由器.在.Net中,我可以收集客户端和服务器IP地址(v4和v6)但我找不到IPv6子网掩码.
有没有办法在.Net中收集这些信息,还是我误解了IPv4和IPv6之间有什么区别?
编辑x2:
我在MS连接站点上发布了这个,看看它们是否正在处理,或者是否有原因他们没有向UnicastIPAddressInformation类添加IPv6Mask属性.
我也在同一时间在MSDN论坛上发布了同样的问题.1800多个观点,而不是一个回复.猜猜我不是唯一一个对此感到好奇的人.
我正在使用通过TCP协议接收文件的应用程序,应用程序处理文件然后通过相同的协议发送它,我接收文件没有问题,我的问题是当我尝试发送文件,因为我需要将文件发送到另一个正在侦听动态端口的应用程序,我用来发送这些文件的代码是:
internal void Send(byte[] buffer)
{
TcpClient _client = null;
try
{
_client = new TcpClient(RemoteIPaddress, Dynamic_port);
if (_client != null)
{
NetworkStream _clienttStream = _client.GetStream();
_clienttStream.Write(buffer, 0, buffer.Length);
_clienttStream.Flush();
_clienttStream.Close();
_clienttStream = null;
}
}
catch
{
if (_client != null)
{
_client.Close();
_client = null;
}
}
}
Run Code Online (Sandbox Code Playgroud)
问题是,如何通过TCP协议将文件发送到使用动态端口的远程计算机
首先让我说明我想要完成的事情.我有一个填充了工作的表.并且有一个Web服务,其方法允许更改所调用的作业数据SaveJob.此方法检索作业及其所有数据,在新数据上运行验证(需要对其他表进行一些数据库查询),然后将其保存回数据库.这有点慢.大约一秒钟.
会发生什么事有时SaveJob会在同一个工作中将两个电话紧密地联系在一起并且它们会相互重叠.现在,这是唯一的Web服务器,但我希望我的解决方案Web服务器场兼容,所以即使我知道如何使用单例来解决这个问题,我更愿意让数据库处理这些锁.
问题是我可以使用NHibernate和SQL Server数据库锁来尝试读取已被另一个SaveJob调用更改的作业时阻止第二次SaveJob调用吗?
我相信答案是肯定的,但我不确定如何去做.我已经阅读了有关该文档的文档ISession.Lock(),我相信我需要的是使用NHibernate.LockMode.Upgrade
我的下一个问题是这个锁何时被释放?
我假设它在事务提交时被释放但我找不到任何明确说明这一点的文档.
但是,如果是这种情况,那么有没有办法让我打开另一个事务并运行一些查询而不关闭我在第一时间抓住工作时开始的事务?或者我必须在一次交易中完成所有这些操作吗?
.net ×4
c# ×3
amazon-s3 ×1
c#-4.0 ×1
caching ×1
firefox ×1
generics ×1
hosting ×1
http ×1
ipv6 ×1
nhibernate ×1
nuget ×1
nugetgallery ×1
powershell ×1
scalability ×1
silverlight ×1
sleep ×1
sockets ×1
subnet ×1
tcpclient ×1
tcplistener ×1
timer ×1
xaml ×1