在我的iOS应用程序中,我试图调用一个TcpListener实例.我定义并启动监听器如下:
var listener = new TcpListener(IPAddress.Any, 104);
listener.Start();
Run Code Online (Sandbox Code Playgroud)
但是,当我运行此代码(iOS模拟器,iPhone,调试模式)时,我得到以下异常:
System.Net.Sockets.SocketException:在/Developer/MonoTouch/Source/mono/mcs/class/System/System.Net中的System.Net.Sockets.Socket.Bind(System.Net.EndPoint local_end)[0x00051]拒绝访问/Sveloper/MonoTouch/Source/mono/mcs/class/System/System.Net.Sockets/TcpListener.cs中的System.SNet.Sockets.TcpListener.Start(Int32 backlog)[0x00022]中的.Sockets/Socket.cs:1111 :259 at /Developer/MonoTouch/Source/mono/mcs/class/System/System.Net.Sockets/TcpListener.cs:239 at
...的System.Net.Sockets.TcpListener.Start()[0x00000]
有什么我可以做的,以避免访问被拒绝错误,或者这是Xamarin.iOS上的Mono运行时的内置限制?
我目前正在做一个将java代码转换为c#的解决方案的基准测试我们有一个快速发展的java软件,并且不想用一个工具移植一些低级别(不是ui)apis,因为维护版本之间的所有更改可能证明真的很无聊...无论如何,我一直在尝试使用Sharpen,因为我听说它是一个非常邪恶的工具,被一些单声道"怪胎"用来控制他们的工具的某些版本.
该插件构建完美,并安装在我的eclipse文件夹中.但是当我在设置完所有内容后尝试运行ant脚本时,我收到一个错误:
java.lang.RuntimeException:在注册表中找不到应用程序"sharpen.core.application".
好.我迷失在这里.我不知道这意味着什么.
如果有人碰到这个并且有解决方案......那会很有帮助.
提前致谢.
我有一个耗时的静态C#方法来创建一个数组(of double:s),因此并行化了操作.
因为我在进入循环之前创建数组并且之后没有篡改它的引用,所以我认为lock在并行循环中更新数组本身应该足够了.
lock对阵列本身是否可以,或者我可能会遇到这种方法的某些性能或死锁问题?创建一个单独的lock变量以锁定它是否更好?
以下是一些示例代码:
static double[] CreateArray(int mn, int n)
{
var localLock = new object(); // Necessary?
var array = new double[mn];
Parallel.For(0, n, i =>
{
... lengthy operation ...
lock (array) // or is 'lock (localLock)' required?
{
UpdatePartOfArray(array);
}
});
return array;
}
Run Code Online (Sandbox Code Playgroud) 我有一个泛型类Foo<T>,我想约束T为一个enum类型.这可能在C#中吗?
我试过了
public class Foo<T> where T : enum // COMPILATION ERROR
Run Code Online (Sandbox Code Playgroud)
但这种方法似乎只对工作class和struct.
同样,尝试约束T到基础enum类型也不起作用:
public class Foo<T> where T : int // COMPILATION ERROR
Run Code Online (Sandbox Code Playgroud)
因为int不是类或接口.
编辑我现在意识到之前已经发布了类似的问题,最终可以删除这个问题.一个与我的问题更相关的问题,也包含与下面相同的答案,就是这个问题.
更新2018年9月13日在最新的次要C#版本7.3中,现在可以将泛型类型约束为Enum.有关详细信息,请参阅此处.
我正在尝试使用Math.NET Numerics来插入DateTime - Value系列.我开始使用线性插值,但是我得到了一些看起来非常不合适的结果.
运行此测试:
public class script{
public void check_numerics()
{
var ticks = DateTime.Now.Ticks;
Console.WriteLine("Ticks: " + ticks);
var xValues = new double[] { ticks, ticks + 1000, ticks + 2000, ticks + 3000, ticks + 4000, ticks + 5000 };
var yValues = new double[] {0, 1, 2, 3, 4, 5};
var spline = Interpolate.LinearBetweenPoints(xValues, yValues);
var ticks2 = ticks;
for (int i = 0; i < 10; i++)
{
ticks2 += 500;
Console.WriteLine(spline.Interpolate(ticks2));
}
}
} …Run Code Online (Sandbox Code Playgroud) 建议如这里使用ConfigureAwait(false)尽可能多的等待上的任务.
IAsyncAction例如,此建议是否也扩展到返回的方法StreamSocket.ConnectAsync()?
也就是说,而不是简单地在我的类库中写这个:
await socket.ConnectAsync(hostName, port);
Run Code Online (Sandbox Code Playgroud)
我应该写这个?
await socket.ConnectAsync(hostName, port).AsTask().ConfigureAwait(false);
Run Code Online (Sandbox Code Playgroud) C#中的一个接口可以继承另一个接口,例如
interface IFoo : IComparable { }
Run Code Online (Sandbox Code Playgroud)
另一方面,以下声明是非法的:
interface IBar : struct { } // Invalid syntax
Run Code Online (Sandbox Code Playgroud)
有什么方法可以声明接口,以便将实现类型限制为 astruct吗?
自从 Visual Studio 2019 正式发布以来,我一直尝试切换到它,但是我在构建基于 C++/CX 的项目时遇到了问题。
我没有重新定位项目,但它仍然配置为使用 v141 平台工具集,即 Visual Studio 2017 Build Tools。
据我所知,我已经在 Visual Studio 2019 中专门安装了所需的构建工具,这里应该很明显:
尽管如此,根据项目属性,未安装 Visual Studio 2017 Build Tools:
当我构建项目时,我收到以下错误:
1>C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Microsoft\VC\v160\Microsoft.CppBuild.targets(378,5): error MSB8020: The build tools for Visual Studio 2017 (Platform)找不到工具集 = 'v141')。要使用 v141 构建工具进行构建,请安装 Visual Studio 2017 构建工具。或者,您可以通过选择“项目”菜单或右键单击解决方案,然后选择“重定向解决方案”来升级到当前的 Visual Studio 工具。
我的安装中是否仍然缺少某些组件,或者这是 Visual Studio 2019 中的错误?
编辑我应该指出我仍然在同一台计算机上安装了 Visual Studio 2017。
我正在使用Entity Framework来建模现有数据库.其中一个数据库表包含一个与表AnonymousUID同名的列.
我使用Entity Framework Power Tools函数Reverse Engineer Code First来生成模型类和映射.逆向工程过程自动重命名AnonymousUID类成员(to AnonymousUID1)以避免成员名称与类名相同.生成的模型类因此如下所示:
public partial class AnonymousUID
{
public string UID { get; set; }
public string AnonymousUID1 { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
并且EF映射构造函数的实现方式如下:
public AnonymousUIDMap()
{
// Primary Key
this.HasKey(t => t.UID);
// Properties
this.Property(t => t.UID).IsRequired().HasMaxLength(64);
this.Property(t => t.AnonymousUID1).IsRequired().HasMaxLength(64);
// Table & Column Mappings
this.ToTable("AnonymousUID");
this.Property(t => t.UID).HasColumnName("UID");
this.Property(t => t.AnonymousUID1).HasColumnName("AnonymousUID");
}
Run Code Online (Sandbox Code Playgroud)
数据库上下文类的实现方式如下:
public partial class MyDbContext : DbContext
{ …Run Code Online (Sandbox Code Playgroud) 我想使用常规.NET Framework 类库中的源代码构建Windows Store 类库.理想情况下,我不想修改原始源代码文件.
在.NET Framework库的一些源代码文件中,静态成员使用的是在常规.NET Framework API和.NET for Windows Store应用程序 API中定义的类,但只有一部分. .NET Framework成员可用于Windows应用商店.
一个具体示例是System.IO.Path,其中GetFullPath方法不适用于Windows应用商店应用.
在我的Windows Store类库中合并此方法的替换并使原始源代码调用此方法相当简单.我的问题是,有没有办法在不修改原始源代码文件的情况下做到这一点?
到目前为止,我还没有找到一个令人满意的解决方案来解决这个问题,但是我已经通过在另一个命名空间中实现了例如方法来解决了我的Windows Store类库Path.GetFullPath(string):
namespace WindowsStoreLib.System.IO {
public static class Path {
public static string GetFullPath(string path) { ... }
}
}
Run Code Online (Sandbox Code Playgroud)
然后在原始文件中添加预处理程序指令:
#if NETFX_CORE
using Path = WindowsStoreLib.System.IO.Path;
#endif
Run Code Online (Sandbox Code Playgroud)
是否有其他解决这个问题,它不要求原始源代码文件的修改?
c# ×9
.net ×2
async-await ×1
c++-cx ×1
converter ×1
enums ×1
generics ×1
inheritance ×1
ios ×1
java ×1
locking ×1
math.net ×1
mono ×1
numerics ×1
orm ×1
performance ×1
sharpen-tool ×1
sockets ×1
struct ×1