我以前使用过BeginAccept()和BeginRead() ,但是在Visual Studio 2012中,我想在我的套接字服务器程序中使用新的asynchronous( async , await )function。 我如何完成AcceptAsync和ReceiveAsyncfunction? using System.Net; using System.Net.Sockets; namespace OfficialServer.Core.Server { public abstract class CoreServer { private const int ListenLength = 500; private const int ReceiveTimeOut = 30000; private const int SendTimeOut = 30000; private readonly Socket _socket; protected CoreServer(int port, string ip = "0.0.0.0") { _socket = new Socket(AddressFamily.InterNetwork, […]
为什么这个程序打印“叉”4次? #include <stdio.h> #include <unistd.h> int main(void) { fork() && (fork() || fork()); printf("forked!\n"); return 0; }
size_t和container::size_type是否有区别? 我所理解的是size_t更通用,可用于任何size_type s。 但是container::size_type针对特定types的容器进行优化的吗?
我想要一个正则expression式来检查 密码必须是八个字符,包括一个大写字母,一个特殊字符和字母数字字符。 这里是我的validationexpression式,它是八个字符,包括一个大写字母,一个小写字母,一个数字或特殊字符。 (?=^.{8,}$)((?=.*\d)|(?=.*\W+))(?![.\n])(?=.*[AZ])(?=.*[az]).*$" 我如何写一个密码,必须是八个字符,包括一个大写字母,一个特殊字符和字母数字字符?
我只是用贝宝打了一个巨大的砖墙。 我创build了一个常规的C#项目来使用他们的WSDL创build一些包装类。 如果您创build了非Web项目,那么添加wsdl的唯一选项就是Web服务参考。 而且这个版本与Web Reference相同,但并不是真正的。它补充说,即使是PayPal家伙也不知道。 所以我整个时间都在这个代理类列表中寻找正确的接口来用作服务(SoapBinding),而PayPalAPIAASoapBinding不在那里,我一直告诉我们的PayPal联系点。 我只能看到以下两个接口,在我看来我需要使用,因为我没有看到一个PayPalAPIAASoapBinding ,你可以在基于Web引用的服务参考中看到: PayPalAPIAAInterfaceClient PayPalAPIInterfaceClient 所以我想通了哦,我可能已经创build了一个服务引用与Web引用,Web引用是Web项目中的一个选项。 但我不希望我的服务引用紧密地耦合到我的Web项目。 所以这就是为什么我创build了C#项目。 那么,服务引用与Web引用有什么关系呢? 那么如果服务引用会给我一个循环,并给我一个不同的接口,而不是一个Web引用,那么我应该怎么把它分离出来呢? 另外,为了让事情变得更加混乱,VS 2008有一个Web服务应用程序项目。 那我该用什么? 我们正在使用.NET 3.5框架,我们还没有准备好转移到WCF 。 那么即使不使用WCF或什么,我仍然可以使用新的服务引用? 如果您使用的是.NET 3.5而不是WCF,而您仍然想要使用基本的Web服务,那么您仍然使用服务引用路由而不使用WCF框架? 这意味着它可以像.NET 2.0 Web Reference一样使用,只是要获得完全不同的WSDL一代?
我想触发一个任务在后台线程上运行。 我不想等任务完成。 在.net 3.5中我会这样做: ThreadPool.QueueUserWorkItem(d => { DoSomething(); }); 在.net 4中,TPL是build议的方式。 我见过的常见模式是: Task.Factory.StartNew(() => { DoSomething(); }); 但是, StartNew()方法返回一个实现IDisposable的Task对象。 这似乎被推荐这种模式的人忽视了。 Task.Dispose()方法的MSDN文档说: “在释放您最后一次引用任务之前,请始终调用Dispose。” 在完成任务之前,您不能调用任何处理任务,因此让主线程等待并调用处理器将首先打败后台线程。 也似乎没有任何完成/完成的事件可以用于清理。 Task类中的MSDN页面不对此进行评论,而“Pro C#2010 …”这本书推荐了相同的模式,并没有对任务处理进行评论。 我知道如果我只是离开它,终结者将抓住它,但是当我正在做这样的大火和忘记任务,并且终结者线程被淹没时,这是否会回来咬我? 所以我的问题是: 在这种情况下,不要在Task类上调用Dispose()是否可以接受? 如果是这样,为什么还有风险/后果? 有没有任何文件讨论这个? 或者有没有适当的方式处理我错过的Task对象? 还是有另一种方式与TPL做火和忘记任务?
我有一个窗体显示进度消息,因为一个相当长的过程运行。 这是一个Web服务的调用,所以我不能真正显示一个百分比完整的数字在进度栏上的意义。 (我不特别喜欢进度条的Marquee属性) 我想展示一个GIFanimation,给过程一些活动的感觉(例如文件从一台计算机飞到另一台,像Windows复制过程)。 你怎么做到这一点?
我有点惊讶,不可能通过XAML为Canvas.Children设置一个绑定。 我不得不采取一种代码隐藏的方式,看起来像这样: private void UserControl_Loaded(object sender, RoutedEventArgs e) { DesignerViewModel dvm = this.DataContext as DesignerViewModel; dvm.Document.Items.CollectionChanged += new System.Collections.Specialized.NotifyCollectionChangedEventHandler(Items_CollectionChanged); foreach (UIElement element in dvm.Document.Items) designerCanvas.Children.Add(element); } private void Items_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e) { ObservableCollection<UIElement> collection = sender as ObservableCollection<UIElement>; foreach (UIElement element in collection) if (!designerCanvas.Children.Contains(element)) designerCanvas.Children.Add(element); List<UIElement> removeList = new List<UIElement>(); foreach (UIElement element […]
我正在计算两个地理坐标之间的距离。 我正在testing我的应用程序对其他3-4应用程序。 当我计算距离时,我的计算结果平均为3.3英里,而其他应用则为3.5英里。 这是我试图执行的计算的一个很大的区别。 有没有好的类库来计算距离? 我在C#中计算这样的: public static double Calculate(double sLatitude,double sLongitude, double eLatitude, double eLongitude) { var radiansOverDegrees = (Math.PI / 180.0); var sLatitudeRadians = sLatitude * radiansOverDegrees; var sLongitudeRadians = sLongitude * radiansOverDegrees; var eLatitudeRadians = eLatitude * radiansOverDegrees; var eLongitudeRadians = eLongitude * radiansOverDegrees; var dLongitude = eLongitudeRadians – sLongitudeRadians; var dLatitude […]
在另一个.c文件中包含.c文件是否正确(甚至是推荐/好的做法)? 当他们被包含在一个项目文件中会发生什么?