Pertanyaan Aplikasi CE 6.0 / .NET CF 3.5 telah mengalami kesalahan serius (MC3100)


Saat keluar dari aplikasi .NET CF 3.5 saya di Motorola MC3100 (versi CE 6.0 saja) saya mendapatkan pesan kesalahan "Aplikasi xxx telah mengalami kesalahan serius dan perlu ditutup". Saya kemudian perlu menghangatkan boot perangkat agar aplikasi berfungsi kembali.

Kode ini berfungsi dengan baik sampai aplikasi dimatikan dan hanya gagal jika font diatur pada kontrol dalam aplikasi. Semuanya juga berfungsi dengan baik pada .NET CF 2.0 dan semua perangkat Motorola, Intermec, Psion, HHC lainnya yang telah saya coba dengan .NET CF 3.5.

Berikut adalah kode pengujian saya saat ini:

[MTAThread]
static void Main()
{
  Control oCtrl = new Control();
  oCtrl.Font = new System.Drawing.Font("Tahoma", 10F, System.Drawing.FontStyle.Bold);

  // Setting the controls font to null works
  // oCtrl.Font = null;  Works

  // Setting the Control to null does not work, still get error
  // oCtrl = null;       Doesn't work

  // Setting a font, not on a control, also works fine.
  // System.Drawing.Font font = new System.Drawing.Font("Tahoma", 10F, System.Drawing.FontStyle.Bold);
}

Saya telah melihat beberapa tautan yang tampaknya terkait:

Namun sejauh ini satu-satunya rekomendasi yang saya temukan adalah menghilangkan font di dalam aplikasi. Dalam hal ini ada terlalu banyak tempat di mana font ditetapkan, termasuk rakitan tertaut, bahwa itu tidak mungkin.

Apakah ada orang lain yang melihat hal seperti ini. Sepertinya ada hubungannya dengan kontrol tidak benar membuang font pada versi ini.


7
2018-05-22 19:47


asal


Jawaban:


Saya menghadapi masalah yang persis sama. Mencoba yang berikut (tidak ada yang memecahkan masalah):

  • Hapus semua new Font() pernyataan
  • Menggunakan Form.Close() dari pada Application.Exit()
  • Pindahkan seluruh aplikasi ke .NET CF 3.5
  • Berusaha menghapus dependensi SQLite

Satu-satunya solusi yang akhirnya berhasil untuk kasus kami, (namun itu bukan solusi "cantik"), telah menjadi perintah berikut di MainForm.Closed() 

Process.GetCurrentProcess().Kill()

2
2017-09-06 21:08



Saya sudah memiliki masalah ini dengan MC3190. Solusi yang saya temukan adalah untuk melacak semua bentuk yang dibuka dalam aplikasi dengan menambahkan setiap contoh ke Daftar global dan pada aplikasi keluar loop melalui daftar dan memanggil Formulir. Tentukan pada setiap item dalam daftar. Telah membuat saya stres selama berbulan-bulan.


1
2017-11-30 14:53



Saya mengalami masalah yang sama: Motorola MC3100, dengan wince6, hanya menabrak keluar aplikasi ketika menjalankan standalone, dan tidak ada crash ketika menjalankan dengan debugger VS terlampir. ketika jatuh, OS adalah HS dan satu-satunya solusi adalah untuk mendinginkan perangkat.

Dan saya berhasil menghadapinya dengan solusi berikut.

Aplikasi saya menggunakan Application.exit () dalam bentuk sub-modal, dan tampaknya itu tidak berhubungan dengan baik dengan beberapa sumber daya yang tidak dikelola yang digunakan oleh font.

dalam kasus saya penyebab tepatnya adalah menggunakan Font baru (...) dalam form utama saya. menggunakannya dalam subformal modal tidak menyebabkan masalah apa pun.

Membawa kembali application.exit () dalam form utama tidak berhasil, atau membuang secara eksplisit font ressources (saya membuat banyak percobaan dengan cara ini).

Pada akhirnya satu-satunya solusi yang saya temukan yang berfungsi adalah untuk menutup aplikasi dengan menutup mainform daripada menggunakan application.exit (), dan berfungsi dengan baik.


0
2018-02-06 13:39



Application.Exit () tidak direkomendasikan untuk menutup aplikasi. Tutup semua formulir yang dibuka untuk menutup aplikasi.

http://blogs.msdn.com/b/tom_krueger/archive/2005/02/24/379678.aspx


0
2018-03-28 11:44



Kami mengalami masalah ini dengan perangkat Motorola MC3190 yang menjalankan Windows CE 6.0 / .NET 3.5 CF. Selama berbulan-bulan kami menghadapi dialog kesalahan fatal intermiten setelah menutup aplikasi kami. Setiap opsi yang mungkin dieksplorasi dari pengecualian ThreadAbort untuk memastikan setiap sumber daya benar dibuang.

Biasanya, jika perangkat tidak memiliki font tertentu atau mencoba mengakses salah satu yang kebetulan tidak dikenali, itu akan default ke Arial. Namun, dengan MC3190, jika font tidak dikenali, perangkat akan menampilkan dialog kesalahan fatal dan membekukan setelah keluar dari aplikasi. Ini mengakibatkan pengguna harus booting hangat (kadang-kadang boot dingin).

Kami datang dengan dua solusi untuk masalah ini:

  1. Set huruf aplikasi ke sesuatu yang didukung (ganti Tahoma dengan Arial)
  2. Atur ulang objek Font global apa pun dengan melakukan instantiasi dengan font OR yang didukung untuk membatalkan nol.

0
2017-12-06 18:57



Anda harus membuat Formulir dan menjalankan kode Anda di Application.Run () konteks. Pada akhir Run, banyak sumber daya yang dibuang "oleh sihir". Kalau tidak, Anda harus membuang semua sumber daya yang perlu dibuang.


0
2017-08-29 14:10



Kami mengalami masalah yang sama dan dipecahkan dengan baris kode ini di MainForm.Closed ()

Process.GetCurrentProcess().Kill()

0
2017-09-04 09:33



Saya memiliki masalah yang sama pada Motorola 9190-G menggunakan .NET Compact Framework 3.5. Kadang-kadang saya harus boot perangkat hangat karena akan membeku setelah menutup aplikasi saya.

Saya bisa mengatasi masalah dengan menentukan font dari bentuk ListView terkandung di dalam Constructor menjadi Arial, 10pt, Reguler. Saya kemudian secara program mengatur font ke font yang saya inginkan. Sebagai contoh, myListView.Font = new System.Drawing.Font("Tahoma", 11F, System.Drawing.FontStyle.Bold);.

Jika saya memiliki font yang disetel ke kombinasi font / font style / size lainnya, saya akan menerima pesan kesalahan "program mengalami masalah serius dan harus mematikan" ketika menutup aplikasi pada perangkat seluler.


0
2018-03-26 15:21