Tag: xamarin

为什么IAsyncResult将所有端口报告为已打开?

我有一个在线程中运行的方法,但是当我测试它时报告所有端口都是打开的。 似乎方法: var result = client.BeginConnect(host, port, null, null); 在var success = result.AsyncWaitHandle.WaitOne(tcpTimeout);传递结果时效果var success = result.AsyncWaitHandle.WaitOne(tcpTimeout); … 知道如何解决这个问题吗? 我试过client.ConnectAsync(host,port).Wait(TcpTimeout); 但这也没有按预期工作…. public void start() { Thread thread1 = new Thread(new ThreadStart(RunScanTcp)); thread1.IsBackground = true; thread1.Name = “THREAD ME EMER : ” + i; thread1.Priority = System.Threading.ThreadPriority.Highest; thread1.Start(); } public void RunScanTcp() { while (((port = portList.NextPort()) […]

应用程序签名和包安装程序问题

每个人,当我尝试创建我的应用程序以进行分发时,我遇到了一些问题。 我创建了我需要的每个证书,Developer and Developer Installer,根据这里描述的指南developer.xamarin.com/guides/mac/deployment,_testing,_and_metrics/publishing_to_the_app_store/,一切看起来都很好,在bin中生成的文件/ release文件夹可以执行没有问题,但安装程序生成的文件在开始使用SQLite等库时会失败 我在构建应用程序时收到以下警告 Building: Touring (Release) Detecting code signing identity… Code Signing Identity: “Developer ID Application: Melvin Starlin Gonzalez Cerda (4J7DT37GUB)” App ID: “com.starlingonzalez.touring” Performing main compilation… Skipping project since output files are up to date Build complete — 0 errors, 0 warnings 提取嵌入的内容 Merging Mono Runtime into app bundle /Library/Frameworks/Xamarin.Mac.framework/Versions/Current/bin/mmp […]

示例:Mono的DataContractJsonSerializer不会序列化,但.NET会

这是一个准备在Xamarin和VS2013中运行的程序。 我有一个问题,单声道不调用序列化器子类,并需要解决该问题。 题 我应该如何修改SetMembershipProof,以便它将调用位于嵌套子类中的属性[OnSerializing]的方法? using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Runtime.Serialization; using System.Runtime.Serialization.Json; using System.Text; using System.Threading.Tasks; namespace MonoBug { class Program { static void Main(string[] args) { SetMembershipProof2 setMembershipProof = new SetMembershipProof2(); string setProofJSON = CryptoSerializer.Serialize(setMembershipProof); // Inspect the contents of SetProofJSON, it is null under mono, and not null in […]

如何打破视图控制器和数据源之间的引用循环

考虑这个简单的例子: public partial class TableViewController : UITableViewController { public TableViewController (IntPtr handle) : base (handle) { } protected override void Dispose (bool disposing) { Console.WriteLine (String.Format (“{0} controller disposed – {1}”, this.GetType (), this.GetHashCode ())); base.Dispose (disposing); } public override void ViewDidLoad () { //TableView.Source = new TableSource(this); TableView.Source = new TableSource(); } } public […]

CS0117 – Xamarin未检测到“资源”文件夹和文件

我一直在开发一个Xamarin.Forms应用程序,最初在iOS上,现在用于Android。 我遇到了一个问题,我的代码无法看到我的MainActivity.cs中引用的资源。 我有两个不同的资源相同的错误。 我跟随Udemy课程并且讲师强调手动构建一些xml文件,因此有两种类型, axml和xml 。 第一个错误 /Users/richardcurteis/Desktop/OneDrive/DevShared/XamarinProjects/NoteTaker/Droid/MainActivity.cs(35,35): Error CS0117: `NoteTaker.Droid.Resource’ does not contain a definition for `Menu’ (CS0117) (NoteTaker.Droid) 第二个错误: /Users/richardcurteis/Desktop/OneDrive/DevShared/XamarinProjects/NoteTaker/Droid/MainActivity.cs(21,21): Error CS0117: `NoteTaker.Droid.Resource.Id’ does not contain a definition for `action_add’ (CS0117) (NoteTaker.Droid) MainActivity.cs using System; using Android.App; using Android.Content; using Android.Runtime; using Android.Views; using Android.Widget; using Android.OS; using SupportToolbar = Android.Support.V7.Widget.Toolbar; using Android.Support.V7.App; […]

通过Xamarin将video上传到Azure存储

我正在尝试将video文件上传到我的Azure存储帐户。 我已经使用了图像,但是尝试查看上传的video会显示“不支持video格式或MIME类型”的消息。 video格式为mp4。 我使用以下代码上传: public async Task UploadVideo(Stream video, string path) { var container = GetContainer(“videos”); // Creates the container if it does not exist await CreateContainer(container); //Gets the file extension string lastPart = path.Split(‘.’).Last(); // Uploads the video to the blob storage CloudBlockBlob videoBlob = container.GetBlockBlobReference(path); videoBlob.Properties.ContentType = “video/” + lastPart; await videoBlob.UploadFromStreamAsync(video); } […]

BitmapFactory.DecodeByteArray导致Grow Heap(frag case)

我正在开发Xamarin的Android应用程序。 我在从字节流生成图像时遇到问题。 BitmapFactory(这似乎是最流行的解决方案)正在造成巨大的分配问题 – Grow Heap。 ConnectToDb connect = new ConnectToDb (); byte[] arr = connect.SelectImgByte(3,”Thea”); BitmapFactory.Options options=new BitmapFactory.Options(); options.InJustDecodeBounds = true; bmp = BitmapFactory.DecodeByteArray (arr, 0, arr.Length/*,options*/); _imageView.SetImageBitmap (bmp); 以上是调用BitmapFactory.DecodeByteArray的方法。 它工作正常,显示图像。 但它很慢并导致这些“警告”。 Thread started: #6 [dalvikvm-heap] Grow heap (frag case) to 22.596MB for 1997584-byte allocation [Choreographer] Skipped 129 frames! The application may be doing […]

如何处理在一个平台上同步但在另一个平台上异步的代码

在编写基于Xamarin的跨平台C#应用程序时,我经常遇到的情况是在一个平台上同步但在另一个平台上异步的代码。 例如,文件访问在iOS,Android和Mac上是同步的,但在Windows上是异步的。 这导致了一些棘手的问题。 首先,在纯编码级别上,编译器希望方法是异步还是不同步。 但它比这更糟糕。 例如,如果iOS UI线程发现它需要加载一个小文件,并且在UI线程上同步这样做,这可能不会对用户造成任何明显的打嗝。 是的,我意识到,作为一般规则,人们希望预先加载这些资源。 但如果没有发生,并且文件很小,那就不会导致问题。 但是,如果从iOS UI代码调用C#异步方法并等待结果,应用程序将挂起。 结果是我们有两个方法,Foo()和FooAsync(),我们调用哪个方法取决于平台。 但我们不能只让整个事情变得异步。 鉴于此,如何组织一个代码尽可能地坚持DRY,同时在一个平台上保持同步并在另一个平台上保持同步? ** 编辑 – 响应一个例子的请求:这里有一些虚拟代码来说明问题。 如果有人打电话 await StringLoaders.ReadAllText(somePath) 从iOS UI线程,结果是挂起。 是的,这个特定的例子有解决方法。 但一般问题是反复出现的问题。 如果应用程序有很多层,这是特别糟糕的,因为这样做 – 可能需要在整个代码中携带同步/异步区别,从而产生大量方法的两个版本。 public class AsyncStringLoader { public async Task ReadAllTextAsync(string path) { return await Task.Run(() => “Hello”); } } public class StringLoader { public string ReadAllText(string path) { return […]

如何实时读取输出并在需要时在特定时间停止

所以,我有这个工作代码来显示来自System.Diagnostics.Process ping和统计信息 Process P = new Process(); P.StartInfo.FileName = “ping”; P.StartInfo.Arguments = “-c 3 8.8.8.8”; // Take 3 samples to 8.8.8.8 P.StartInfo.UseShellExecute = false; P.StartInfo.RedirectStandardOutput = true; string readData = “”; if (P.Start()) readData = P.StandardOutput.ReadToEnd(); // This will also wait for the process to at least close its stdout Console.Write(readData.ToString()); // Doing this, you […]

ManyToOne约束不起作用

我的关系非常简单,我的模型看起来像这样: public class Project { [PrimaryKey, AutoIncrement] public int ID { get; set; } public string Name { get; set; } [ForeignKey(typeof(User))] public int ProjectManagerID { get; set; } [ManyToOne] public User ProjectManager { get; set; } } public class User { public string Login { get; set; } [OneToMany] public List Projects { get; […]