小编And*_*son的帖子

在iOS上调用TcpListener.Start()时,如何避免Access Denied错误?

在我的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运行时的内置限制?

c# sockets mono ios

5
推荐指数
1
解决办法
4604
查看次数

使用Sharpen和eclipse:错误"应用程序"sharpen.core.application"无法在注册表中找到."

背景

我目前正在做一个将java代码转换为c#的解决方案的基准测试我们有一个快速发展的java软件,并且不想用一个工具移植一些低级别(不是ui)apis,因为维护版本之间的所有更改可能证明真的很无聊...无论如何,我一直在尝试使用Sharpen,因为我听说它是​​一个非常邪恶的工具,被一些单声道"怪胎"用来控制他们的工具的某些版本.

我做了什么

结果

该插件构建完美,并安装在我的eclipse文件夹中.但是当我在设置完所有内容后尝试运行ant脚本时,我收到一个错误:

java.lang.RuntimeException:在注册表中找不到应用程序"sharpen.core.application".

结论

好.我迷失在这里.我不知道这意味着什么.

  • 我正在使用Windows 7 64位
  • 我正在使用Eclipse 3.7
  • 我正在使用java 6 sdk 64位

如果有人碰到这个并且有解决方案......那会很有帮助.

提前致谢.

c# java converter sharpen-tool

4
推荐指数
1
解决办法
2155
查看次数

C#Parallel.For创建数组:确定将lock()放在数组上?

我有一个耗时的静态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)

c# performance locking task-parallel-library

4
推荐指数
1
解决办法
2029
查看次数

可以将泛型类型约束到枚举?

我有一个泛型类Foo<T>,我想约束T为一个enum类型.这可能在C#中吗?

我试过了

public class Foo<T> where T : enum   // COMPILATION ERROR
Run Code Online (Sandbox Code Playgroud)

但这种方法似乎只对工作classstruct.

同样,尝试约束T到基础enum类型也不起作用:

public class Foo<T> where T : int    // COMPILATION ERROR
Run Code Online (Sandbox Code Playgroud)

因为int不是类或接口.


编辑我现在意识到之前已经发布了类似的问题,最终可以删除这个问题.一个与我的问题更相关的问题,也包含与下面相同的答案,就是这个问题.

更新20189月13日在最新的次要C#版本7.3中,现在可以将泛型类型约束为Enum.有关详细信息,请参阅此处.

c# generics enums

4
推荐指数
1
解决办法
137
查看次数

使用Math.Net Numerics对大x值进行错误的线性插值

我正在尝试使用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)

c# linear-interpolation numerics math.net

4
推荐指数
1
解决办法
3996
查看次数

在等待IAsyncAction时我应该使用ConfigureAwait(false)吗?

建议如这里使用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# task-parallel-library async-await

4
推荐指数
1
解决办法
335
查看次数

将接口实现限制为结构?

C#中的一个接口可以继承另一个接口,例如

interface IFoo : IComparable { }
Run Code Online (Sandbox Code Playgroud)

另一方面,以下声明是非法的:

interface IBar : struct { } // Invalid syntax
Run Code Online (Sandbox Code Playgroud)

有什么方法可以声明接口,以便将实现类型限制为 astruct吗?

c# inheritance struct

4
推荐指数
1
解决办法
262
查看次数

在 Visual Studio 2019 中使用 v141 平台工具集构建 C++/CX 项目失败

自从 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。

visual-studio windows-runtime c++-cx visual-studio-2019

4
推荐指数
2
解决办法
6837
查看次数

ModelValidationException:名称'AnonymousUID'不能用于'CodeFirstDatabaseSchema.AnonymousUID'类型

我正在使用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 c# orm entity-framework

3
推荐指数
1
解决办法
1879
查看次数

我可以在.NET API中向现有类"添加"静态方法吗?

我想使用常规.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)

是否有其他解决这个问题,它要求原始源代码文件的修改?

.net c# windows-runtime windows-store-apps

3
推荐指数
1
解决办法
3690
查看次数